[英]industrial strength csv reader (python)
這是我的用例:清理經常從網頁中刪除的CSV文件是我的工作(大多數是英語,但是其中一些德語和其他奇怪的非unicode字符潛入其中)。 Python 3默認是“ utf-8”,通常是
import csv
#open file
with open('input.csv','r',encoding = 'utf-8')
reader = csv.reader(f)
即使在各處都有try / catch塊,也會失敗並出現UnicodeEncodeError
我什至無法打開輸入,也無法弄清楚如何清理輸入。 我的最終目標只是將每一行讀入一個稱為文本的列表中。
我沒有想法,我甚至嘗試了以下方法:
for encoding in ('utf-8','latin-1',etc, etc):
try:
//open the file
我無法對編碼做任何假設,因為它們可能是在世界另一端的Unix機器上編寫的,而我在Windows機器上。 輸入只是簡單的字符串,否則為示例
測試案例:“這是一個測試案例的示例,當在文本處理器中打開測試時,測試可能會換行。”
也許嘗試完全讀入內容,然后以與您提到的大致相同的方式使用bytes.decode():
#!python3
import csv
from io import StringIO
with open('input.csv', 'rb') as binfile:
csv_bytes = binfile.readall()
for enc in ('utf-8', 'utf-16', 'latin1'):
try:
csv_string = csv_bytes.decode(encoding=enc, errors='strict')
break
except UnicodeError as e:
last_err = e
else: #none worked
raise last_err
with StringIO(csv_string) as csvfile:
csv = csv.reader(csvfile)
for row in csv:
print(row[0])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.