2017-03-10 46 views
0

我需要閱讀字符串列表並刪除一些特殊字符。我編寫的代碼可行,但我正在尋找一種有效編寫代碼的方法。因爲我需要爲100萬長列表(例如每個列表有100000個單詞)執行此過程。找到並從python中的長字符串列表中刪除一些子字符串

我寫了一個例子來清除我的問題。

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 

回答

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] 
相關問題