enter image description here file.csv ={“名字”:“基兰”,“姓”:“威尔逊”,“年龄(年)”:"89",“性别”:“男性”,“退休”:“真实”,“婚姻状况”:“结婚或民事伴侣”,“家属”:"3“},{”名“:”瑞安“,”姓“:”克拉克“,”年龄(年)“:"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)注意:这实际上是一个较大的数据集,"dependants“CSV文件的原始标题为line10,列中有一些空行,我希望将这些空行替换为"N/A”。
发布于 2021-10-25 15:57:39
你所拥有的不是csv,而是JSON文件。如果你想把它写到一个文件中,你可以这样做:
注意,我将一起用作namevar filecv。
1.
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__())发布于 2021-10-25 16:00:46
因为您的输入是一个字典列表,所以使用csv.DictWriter比使用csv.Writer更好。而且,与在写入文件的过程中截获无效值相比,更简单的做法是预先修复数据。这段代码还有一些其他问题,最重要的是循环中的line是一个字典,但是您通过索引访问它,就好像它是一个列表一样。
正如其中一条注释所指出的那样,除非您定义了某个名为file的对象,否则调用变量file.csv是一个语法错误。
首先,使用可工作的名称创建字典:
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": " " } ]然后修复空白列以包含N/A
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)https://stackoverflow.com/questions/69710906
复制相似问题