繁体   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