如何写入具有空行的列的CSV文件

2024-04-29 06:29:28 发布

您现在位置:Python中文网/ 问答频道 /正文

enter image description here文件.csv=[ { “名字”:“基兰”, “姓氏”:“威尔逊”, “年龄(年)”:“89”, “性别”:“男性”, “退休”:“真实”, “婚姻状况”:“已婚或民事伴侣”, “受抚养人”:“3” }, { “名字”:“Ryan”, “姓氏”:“克拉克”, “年龄(年)”:“23岁”, “性别”:“男性”, “退休”:“假”, “婚姻状况”:“已婚或民事伴侣”, “受抚养人”:” }, { “名字”:“克莱夫”, “姓氏”:“埃文斯”, “年龄(年)”:“67”, “性别”:“男性”, “退休”:“真实”, “婚姻状况”:“单身”, “受抚养人”:” }]

with open("file.csv",mode='a') as myfile:
     myfile=csv.writer(myfile,delimiter=",")
     for line_number,line in enumerate(myfile):
           if line[10] == "":
               myfile.writerow("N/A")
     print(my_file)

注意,这实际上是一个更大的数据集,“依赖者”CSV文件的原始标头是行(10),列有一些空白行,我希望空白行被“N/A”

替换。

Tags: 文件csvline名字myfilefile性别年龄
2条回答

因为您的输入是一个字典列表,所以您最好使用csv.DictWriter而不是csv.Writer。而不是在写入文件的中间拦截无效值,它将更简单地预先修复数据。代码还有几个其他问题,最重要的是循环中的line是一个字典,但是您通过索引访问它,就像它是一个列表一样

正如其中一条评论所指出的,调用变量file.csv是一个语法错误,除非您定义了一个名为file的对象

首先创建具有可用名称的词典:

file_csv =[ { "First Name": "Kieran", "Last Name": "Wilson", "Age (Years)": "89", "Sex": "Male", "Retired": "True", "Marital Status": "married or civil partner", "Dependants": "3" }, { "First Name": "Ryan", "Last Name": "Clarke", "Age (Years)": "23", "Sex": "Male", "Retired": "False", "Marital Status": "married or civil partner", "Dependants": " " }, { "First Name": "Clive", "Last Name": "Evans", "Age (Years)": "67", "Sex": "Male", "Retired": "True", "Marital Status": "single", "Dependants": " " } ]

然后修复空白列以包含^ {CD6>}:

for row in file_csv:
    for k,v in row.items():
        if v == " ":
            row[k]="N/A")

这将处理所有可能包含空白的列,并且您可能会发现有更多的数据会出现这种情况

代码对文件和csv.Writer对象都使用myfile。那是个坏主意。除非您知道要附加到现有文件,否则请使用w而不是a

with open("file.csv",mode="w") as myfile:
    mywriter = csv.DictWriter(myfile,delimiter=",",fieldnames=file_csv[0].keys())
    mywriter.writeheader()
    mywriter.writerows(file_csv)

这里的不是csv,而是JSON文件。如果要将其写入文件,则可以执行以下操作:

  1. 将空白替换为“不适用”
  2. 获取str属性并将其写入文件

注意,我将一起使用as namevar filecvs

一,

for aDict in filecsv:
    for key,val in aDict.items():
        if val== " ":
            aDict[key] = "N/A"
with open("file.csv",mode='a') as myfile:
         myfile.write(filecsv.__str__())

相关问题 更多 >