我目前正在过滤掉此列表中的所有非字母数字字符。
cleanlist = []
for s in dirtylist:
s = re.sub("[^A-Za-z0-9]", "", str(s))
cleanlist.append(s)
从此列表中过滤出空格的最有效方法是什么?
答案 0 :(得分:0)
这将从字符串中删除空格,并且不会将空字符串添加到cleanlist
cleanlist = []
for s in dirtylist:
s = re.sub("[^A-Za-z0-9]", "", str(s).strip())
if s:
cleanlist.append(s)
答案 1 :(得分:0)
我实际上会使用列表理解,但你的代码已经很有效了。
pattern = re.compile("[^A-Za-z0-9]")
cleanlist = [pattern.sub('', s) for s in dirtylist if str(s)]
此外,这是一个副本:Stripping everything but alphanumeric chars from a string in Python
答案 2 :(得分:0)
最大的效率来自于使用正则表达式处理的全部功能:不要遍历列表。 其次,不要将单个字符从字符串转换为字符串。非常简单:
cleanlist = re.sub("[^A-Za-z0-9]+", "", dirtylist)
可以肯定的是,我针对一些列表理解和字符串替换方法对此进行了测试;以上是最快的至少20%。