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