2013-10-29 48 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