我使用import string
和string.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']