2014-10-31 101 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