我有一個混合編碼文件,我只想保留字母數字和一些字符,如:。(點),/(破折號),|(豎線),空格(不包括\ t,\ n,\ f)。其他角色應該被白色空間替代。結果內容將發送到另一個文件。只保留字母數字字符和預定義的特定字符
下面是我的代碼:
def clean(input):
string_list = list(input)
for idx in range(0, len(string_list)):
if not re.match("\w|\s|\||\.|/", string_list[idx]):
string_list[idx] = " "
return "".join(string_list)
file_in = "input.txt"
file_out = "output.txt"
with open(file_in, "r") as f1:
with open(file_out, "w") as f2:
lines = f1.readlines()
for line in lines:
line_raw = clean(line)
f2.write(line_raw)
print "Finished!"
我發現我的輸出文件仍然包含像「換」或「新線」的一些特殊字符存在(他們應該被刪除)。 有沒有可能有一些不可見的Unicode字符仍然存在? 我懷疑我應該閱讀二進制模式的文件,並使用正則表達式像這樣的鏈接: python: regular expression search pattern for binary files (half a byte) 但我還沒有成功。我怎麼能達到我的目的?
EDIT1:我上面提到的空格應該是一個「真正的白色空間」(當我們使用空格鍵生成的,而不是\ t,\ n,\樓等)
這是因爲表單提要等被包含在空白(\ s)的定義中。相反,您可能需要明確匹配空格和製表符。 –
順便說一句,你用空白替換一個空格... –
給我們一個輸入文件的文本例子 – saikumarm