2014-10-31 18 views
0

我正在python中製作文本分析器。我試圖從列表中刪除任何不包含任何字母或整數的字符串。我被卡住了,不知道該怎麼做。目前,在計算我的列表長度時,它包含字符串' - ',我不想要這樣做,因爲我不想把它算作一個單詞。但是我寧願不使用string.remove(' - '),因爲我希望它可以用於其他輸入。刪除不包含Python中的字符串列表中的字母的字符串

在此先感謝。

+3

張貼的例子。 – 2014-10-31 01:45:52

+0

發佈示例代碼 – smushi 2014-10-31 01:50:09

+1

您可能想要使用're' - https://docs.python.org/2/library/re.html建議還發布了一些代碼示例,例如您嘗試使用的其他代碼 – Karl 2014-10-31 01:51:59

回答

2

我想你的意思是你想過濾掉字符串列表中沒有字母數字字符的字符串。所以,[ '一', 'B', '*'] => [ '一', 'B']

不是太難:

In [39]: l = ['adsfg','sdfgb','gdc','56hjfg1','&#$%^',"asfgd3$#$%^" ] 
In [40]: l = filter (lambda s:any([c.isalnum() for c in s]), l) 
Out[41]: ['adsfg', 'sdfgb', 'gdc', '56hjfg1', 'asfgd3$#$%^'] 

In [42]: 
+1

請注意,問題已標記3.4,所以你需要在那裏拋出額外的'list'來獲得輸出,例如'list(filter(lambda s:any(c.isalnum()for c in s),l))'。 – DSM 2014-10-31 02:38:56

+0

感謝您的糾正。 – 2014-10-31 02:59:10

0

如果你想保持與字母數字字符的字符串在他們但包含非字母數字字符:

import re 

strings = ["string", "&*()£", "$^TY?", "12345", "2wE4T", "@#~\!", "^(*4"] 

strings = [s for s in strings if re.search(r'\w+', s)] # \w matches alphanumeric chars 

print strings 
['string', '$^TY?', '12345', '2wE4T', '^(*4'] # now we can work with these wanted strings 

否則,只保留通過完全填充,只有字母數字字符字符串:

str.isalnum()是你的男人:

strings = [s for s in strings if s.isalnum()] 
print strings 
['string', '12345', '2wE4T'] 

更重模塊:

https://docs.python.org/2/howto/regex.html

http://www.regular-expressions.info/tutorial.html