从python中的字符串列表中删除不包含字母的字符串

时间:2014-10-31 01:45:12

标签: python string python-3.4

我在python中创建一个文本分析器。我试图删除任何不包含该列表中的任何字母或整数的字符串。我被困住了,不知道该怎么做。目前,当计算我的列表的长度时,它包括字符串' - '我不想要它,因为我不想把它算作一个字。但是我不想使用string.remove(' - ')因为我希望它能用于其他输入。

提前致谢。

2 个答案:

答案 0 :(得分:2)

我想你的意思是你要过滤掉字符串列表中没有字母数字字符的字符串。所以['a','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 :(得分: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