2017-06-22 62 views
1

我遇到一個問題,閱讀使用熊貓分頁標籤分離文件。閱讀與Python熊貓分頁標籤文件

所有的單元格值都有雙引號,但對於某些行,還有一個額外的雙引號可以打破整個過程。例如:

Column A Column B Column C 
"foo1" "121654" "unit" 
"foo2" "1214" "unit" 
"foo3" "15884"" 

我得到的錯誤是:錯誤標記數據。答案:C:應符合8355 31場,只見58

我使用的代碼是:

csv = pd.read_csv(file, sep='\t',  lineterminator='\n', names=None) 

並能正常工作的文件的其餘部分,但不是在那裏這些額外的雙引號出現的那些。

+1

但您的輸入數據已損壞。修復創建buggy文件的代碼不是更簡單嗎? –

+0

你是對的,除了這個數據來自我們的客戶之一。有沒有解決方案來讀取這個特定的文件? –

+0

只有在行尾或任何地方纔會遇到雙引號? –

回答

1

如果你不能改變車的輸入,最好的辦法是讀取輸入文件轉換成io.StringIO對象,取代了雙引號,然後將這個類似文件的對象傳遞給pd.read(它支持文件名和文件類對象)

這樣您就不必創建臨時文件或更改輸入數據。

import io 

with open(file) as f: 
    fileobject = io.StringIO(f.read().replace('""','"')) 

csv = pd.read_csv(fileobject, sep='\t', lineterminator='\n', names=None) 
1

你可以做預處理步驟來解決報價問題:

with open(file, 'r') as fp: 
    text = fp.read().replace('""', '"') 

with open(file, 'w') as fp: 
    fp.write(text) 
+0

感謝您的答案。這說得通。當我回到我的電腦時,我會稍微嘗試一下 –