我有大量包含數據的文件,我嘗試使用Python腳本進行處理。從文本文件中刪除未知字符
這些文件是未知的編碼,如果我在Notepad ++中打開它們,它們包含由加載'空白'字符(在記事本++中黑色背景上的白色表示爲NULL)分隔的數字數據。
爲了處理這個問題,我通過空字符\ X00的文件分開,並使用下面的腳本檢索唯一數值:
stripped_data=[]
for root,dirs,files in os.walk(PATH):
for rawfile in files:
(dirName, fileName)= os.path.split(rawfile)
(fileBaseName, fileExtension)=os.path.splitext(fileName)
h=open(os.path.join(root, rawfile),'r')
line=h.read()
for raw_value in line.split('\x00'):
try:
test=float(raw_value)
stripped_data.append(raw_value.strip())
except ValueError:
pass
然而,存在有時在該文件中其他無法識別的字符(如就像我發現的那樣,總是在開頭) - 這些在Notepad ++中顯示爲'EOT','SUB'和'ETX'。它們似乎干擾了Python中文件的處理過程 - 文件似乎以這些字符結束,即使Notepad ++中有更多可見的數據。
如何在處理之前從這些文件中刪除所有非ASCII字符?
如果這些文件在該未知編碼中是正確的,那麼您可能需要使用一些邏輯來嘗試如果某種編碼看起來合適,並閱讀該編碼中的文件。應該有一些庫/示例代碼在那裏。 (就像Notepad ++以特定的編碼方式打開它認爲合適的文件。)如果這不是一個選項......請參閱下面的答案。 – Kissaki 2010-11-25 15:45:16
我找不到任何適合的編碼 - 認爲這是一種奇怪的獨特格式。 – meepmeep 2010-11-25 16:05:37
如果你問了一個問題,以確定你的文件的佈局和編碼,你會幫助你很多...(1)文件的來源(什麼網站,什麼軟件創建它們)(2)顯示文件的前幾個字節的內容...使用`print repr(open('afile.ext', 'rb')。read(200))` – 2010-11-25 18:28:00