我有以下問題。 我試圖從字符串中刪除所有非字母字符(即數字(string.digits),標點符號(string.punctuation),非ascii字符(如φ,χ,ψ等) 這可以是一個簡單的命令一樣輕鬆地完成。快速刪除字符串中的所有非字母字符,python
for i in str:
if i not in string.ascii_letters:
data1 = str.replace(i,"")
,或者使用過濾器 不過,我的問題是,我的字符串的長度大約爲20.000.000(幾本書串聯在一起) 現在的情況。 3.000.000個字符,上面的命令花費了大約20分鐘,因此我不敢用20,000.000個字符來嘗試它。 能否請告訴我是否有真正快速的方法來做到這一點?
你是否一次需要所有的角色?如果沒有,你可以使用'itertools.ifilter'。另外,使用'set(string.ascii_letters)'意味着更高效的成員資格測試。 – jonrsharpe 2015-01-31 20:52:08
你的代碼甚至不會像你認爲的那樣工作。你正在運行'str.replace',它返回一個* new *字符串,將它賦值給'data1',然後在下一次找到另一個不在'in string.ascii_letters'中的字符時將結果扔掉。 – roippi 2015-01-31 20:54:58