簡體   English   中英

在CSV文件的單元格開頭添加“ 0”?

[英]Appending a “0” to the beginning of a cell in a CSV file?

具體來說,我在CSV文件的單列中列出了大約2000個FIPS代碼(例如:“ 8001007801”)。 所有這些代碼都應以0開頭,但是默認情況下,Excel格式化單元格以刪除僅包含數字的單元格開頭的“ 0”值。 我知道在打印時如何格式化,但在文件時卻不知道。

我需要我的腳本瀏覽每行的第一個單元格,在其前面放置一個“ 0”,然后將該行復制到新的輸出CSV。 這是我到目前為止的內容:

    import csv

    inFile = open("FIPS_original.csv", "r")
    reader = csv.reader(inFile, delimiter = ";", quotechar = '"')

    outFile = open("FIPS_appended.csv", "w")
    writer = csv.writer(outFile, delimiter = ";", quotechar = '"')    

    for row in reader:
        outRow = list(row)
        outRow[0] = outRow[0].zfill(11)
        writer.writerow(outRow)

    inFile.close()
    outFile.close()

此腳本在此刻所做的所有操作都是將相同的值復制到輸出CSV,但實際上並沒有附加“ 0”。 有人可以幫忙嗎? 如果您需要更多信息,請告訴我,謝謝。

編輯:我應該注意,當我使用打印功能在Python IDLE中打印我的值時,它們的格式正確。 我還應該注意,我沒有選中Excel設置,該設置會自動將沒有字母字符的文本單元格設置為數字格式,並且還嘗試將兩個電子表格中的所有單元格設置為數字格式。

解答:事實證明,這確實是Excel中的格式問題。 即使禁用自動將僅數字文本單元格更改為數字單元格的選項,將單元格類型更改為文本也不會執行任何操作。 您需要做的是自定義格式,以容納所需的任何字符(如果該列中的所有數字都是不同的字符,則不能解決任何問題)。 該鏈接說明了如何執行此操作: https : //superuser.com/questions/88870/adding-a-zero-before-values-in-an-excel-spreadsheet-column

感謝所有幫助-一旦有足夠的時間讓我將其發布為我將回答自己的問題的答案。

嘗試這個:

import csv

fn_in="/tmp/FIPS_original.csv"
fn_out="/tmp/FIPS_appended.csv"
with open(fn_in, "r") as inFile, open(fn_out, 'w') as outFile:
    reader = csv.reader(inFile, delimiter = ";", quotechar = '"')
    writer = csv.writer(outFile, delimiter = ";", quotechar = '"')    
    header=next(reader)
    writer.writerow(header)

    for row in reader:
        row[0] = row[0].zfill(11)
        writer.writerow(row)

您描述的行為可能是因為csv沒有將每一行中的每一列解析為一個列表。 嘗試輸入打印語句,以確保分隔符和引號字符正確。

暫無
暫無

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

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