2013-10-29 44 views
0

的列表剥离标点符号我有这样的单词列表从字符串

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

我想删除, . " ' ? ! *和其他一切是在开始或结束

for element in array: 
    # perform 

的思考?

+1

请注意,'str'是*不可变*类型:您不能*从字符串本身中删除任何东西。您只能更改列表或创建一个新列表。用新的字符串。 – Elazar

回答

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_])字符。

+2

我认为OP的意思是'string.punctuation' – Elazar