我需要读取字符串列表并删除一些特殊字符。我写的代码有效,但我正在寻找一种方法来有效地编写代码。因为,我需要为100万个长列表执行此过程(例如,每个列表有100000个单词)。
我写了一个例子来澄清我的问题。
input:
str= ['short', 'club', 'edit', 'post\C2', 'le\C3', 'lundi', 'janvier', '2008']
specialSubString=['\C2','\C3','\E2']
output:
str= ['short', 'club', 'edit', 'post', 'le', 'lundi', 'janvier', '2008']
我的代码:
ml=len(str)
for w in range(0,ml):
for i in range(0, len(specialSubString)):
token=specialSubString[i]
if token not in str[w]:
continue
else:
l= len(token)
t= str[w]
end= len(t)-l
str[w]=t[:end]
break
for w in str:
print w
答案 0 :(得分:2)
创建一个包含您要删除的所有特殊字符的字符串,并在右侧显示strip个字符串:
strings = ['short', 'club', 'edit', 'post\C2', 'le\C3', 'lundi', 'janvier', '2008']
special = ''.join(['\C2','\C3','\E2']) # see note
此时请注意\
是一个特殊字符,您应该在使用它时将其转义,以避免歧义。您也可以简单地创建一个字符串文字,而不是使用str.join
。
special = '\\C2\\C3\\E2' # that's better
strings[:] = [item.rstrip(special) for item in strings]