如何在Python中去除所有开头和结尾的标点符号?

21

我知道如何去除字符串中的所有标点符号。

import string

s = '.$ABC-799-99,#'

table = string.maketrans("","") # to remove punctuation
new_s = s.translate(table, string.punctuation)

print(new_s)
# Output
ABC79999

如何在Python中去除所有前导和尾随标点符号?期望的结果为'. $ ABC-799-99,#''ABC-799-99'


4
s.strip(string.punctuation) 的翻译是:去除字符串s开头和结尾处的标点符号(punctuation)。 - zondo
2
我在谷歌上搜索了你的问题标题,链接的重复内容是第一个结果,提供了你正在寻找的确切解决方案。请在未来进行更多的研究。 - TigerhawkT3
@TigerhawkT3,谢谢,我在SO上做了研究。 - SparkAndShine
1
SO的搜索功能不是很好。下次试试谷歌吧。 - TigerhawkT3
@TigerhawkT3,可能与关键字有关。这样的情况可能是因为在这种语境中,“leading”或“trailing”比“starting”更常见。 - SparkAndShine
显示剩余2条评论
1个回答

37
你需要做的就是你在问题中提到的,只需使用 str.strip 就可以了。
from string import punctuation
s = '.$ABC-799-99,#'

print(s.strip(punctuation))

输出:

 ABC-799-99
< p >< em > str.strip 可以取多个字符来去除。

如果您只想要去除前导标点符号,您可以使用str.lstrip

s.lstrip(punctuation)

或者rstrip掉任何末尾的标点符号:

 s.rstrip(punctuation)

如果我保留 $,并使用s.strip(string.punctuation.replace('$', '')),这样会更好吗? - SparkAndShine
1
@sparkandshine,不用担心,我认为.punctuation.replace('$', '')非常好,另一个选择是手动创建一个不包含$的标点字符字符串,但我认为这会更加繁琐。 - Padraic Cunningham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接