簡體   English   中英

Python沒有讀/寫整個csv文件

[英]Python not reading/writing entire csv file

我正在做一個項目,我必須解析一個包含 500,000 行的巨大 csv 文件。 下面以一小部分代碼為例。 它很好地分解了列,但是當我需要它遍歷所有 500,000 行時,它只讀取 9,132 行。 csv 以 cp1252 編碼,我覺得這可能是問題的一部分,但我不確定。 這也是我得到的錯誤:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 4123: character maps to <undefined>

代碼:

import csv

outfile = open("newFile.csv", 'w')
with open("ProductFile.csv", "r") as f:
    reader = csv.reader(f, delimiter=',')
    for row in reader:
        Item_ID = row[0]
        Sku = row[1]
        SKU_ID = row[2]
        altpartnum = row[3]
        Application = row[4]
        Brandcode = row[5]

        line = "{},{},{},{},{},{},\n".format(
            Item_ID, AD_SKU_ID, MemberSku, Application, Brandcode, Application, Brandcode)
        outfile.write(line)
    outfile.close()

CP1252 不支持解碼字節 0x81,所以編碼不是 CP1252。 它可能是 ISO-88591(又名 latin1),但它會將所有字節編碼為某種東西,因此您可能會得到mojibake

建議的代碼(但如果不是latin1則使用正確的編碼):

import csv

with (open('ProductFile.csv', 'r', encoding='latin1', newline='') as fin,
      open('newFile.csv', 'w', encoding='latin1', newline='') as fout):

    reader = csv.reader(fin)
    writer = csv.writer(fout)

    for row in reader:
        fout.writerow(row[:6]) # first 6 columns or whatever you want to write
                               # The OP code had undefined variables

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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