从字符串列表中删除标点符号

时间:2013-10-29 02:30:38

标签: python list strip

我有一个像这样的单词列表

['Hey', 'yo', 'Hey?', 'Yeah.', 'john:']

我想删除, . " ' ? ! *以及开头或结尾的所有其他内容

for element in array:
    # perform

思考?

1 个答案:

答案 0 :(得分:4)

取决于“其他一切”的含义。

[elt.strip(',."\'?!*:') for elt in array]
假设你有一个相当小的可移动令牌列表,

非常容易并完成工作。

In [1]: ar = ['Hey', 'yo', 'Hey?', 'Yeah.', 'john:']

In [2]: [elt.strip(',."\'?!*:') for elt in ar]
Out[2]: ['Hey', 'yo', 'Hey', 'Yeah', 'john']

或者,按照建议:

import string
[elt.strip(string.punctuation) for elt in ar]

否则,如果你想删除所有其他不是字母数字的东西,你可以这样做:

import re
[re.sub(r'\W+', '', elt) for elt in array]

将删除所有非单词(准确地说,[A-Za-z0-9_])个字符。