我使用import stringstring.punctuation,但是我意识到在执行'…'之后仍然有string.split()。我还得到了'',我不知道为什么在执行strip(之后会得到它。据我了解,strip()删除了外围空格,因此,如果我在字符串之间有空格,那就没关系了:

>>> s = 'a dog    barks    meow!   @  … '
>>> s.strip()
'a dog    barks    meow!   @  …'


>>> import string
>>> k = []
>>> for item in s.split():
...  k.append(item.strip(string.punctuation))
...
>>> k
['a', 'dog', 'barks', 'meow', '', '…']


我想摆脱'', '…',我想要的最终输出是['a', 'dog', 'barks', 'meow']

我想避免使用正则表达式,但是如果这是唯一的解决方案,那么我将考虑使用它..目前,我对不使用正则表达式的解决方案更感兴趣。

最佳答案

您可以通过仅保留字母数字字符和空格来删除标点符号:

s = 'a dog    barks    meow!   @  …'
print(''.join(c for c in s if c.isalnum() or c.isspace()).split())


输出:

['a', 'dog', 'barks', 'meow']

09-25 22:12
查看更多