3 回答

TA貢獻1883條經(jīng)驗 獲得超3個贊
您的問題不明確;前兩個句子加在一起表示您相信空格和“句點”是非ASCII字符。這是不正確的。等于ord(char)<= 127的所有字符都是ASCII字符。例如,您的函數(shù)不包括這些字符!“#$%&\'()* +,-。/,但包括其他幾個字符,例如[] {}。
請退后一步,三思而后行,然后編輯您的問題以告訴我們您要做什么,而無需提及ASCII單詞,以及為什么您認為ord(char)> = 128這樣的chars是可忽略的。另外:哪個版本的Python?輸入數(shù)據(jù)的編碼是什么?
請注意,您的代碼以單個字符串的形式讀取整個輸入文件,并且您對另一個答案的注釋(“最佳解決方案”)意味著您無需關(guān)心數(shù)據(jù)中的換行符。如果您的文件包含這樣的兩行:
this is line 1
this is line 2
結(jié)果將是'this is line 1this is line 2'……您真正想要的是什么?
更好的解決方案包括:
過濾器功能比一個更好的名字 onlyascii
認識到如果要保留參數(shù),則過濾器函數(shù)僅需要返回真實值:
def filter_func(char):
return char == '\n' or 32 <= ord(char) <= 126
# and later:
filtered_data = filter(filter_func, data).lower()
添加回答
舉報