簡體   English   中英

工業實力CSV閱讀器(Python)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM