Pythonically将头添加到csv文件
我编写了一个合并两个csv文件的Python脚本,现在我想在最终的csv文件中添加一个头文件。我尝试按照报告的建议进行操作,但得到了以下错误:Pythonically将头添加到csv文件,python,csv,header,Python,Csv,Header,我编写了一个合并两个csv文件的Python脚本,现在我想在最终的csv文件中添加一个头文件。我尝试按照报告的建议进行操作,但得到了以下错误:预期的字符串,找到了float。解决这一问题的最佳方法是什么 以下是我正在使用的代码: import csv with open('combined_file.csv', 'w', newline='') as outcsv: writer = csv.DictWriter(outcsv, fieldnames = ["Date", "tempe
预期的字符串,找到了float
。解决这一问题的最佳方法是什么
以下是我正在使用的代码:
import csv
with open('combined_file.csv', 'w', newline='') as outcsv:
writer = csv.DictWriter(outcsv, fieldnames = ["Date", "temperature 1", "Temperature 2"])
writer.writeheader()
with open('t1.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows(row + [0.0] for row in reader)
with open('t2.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows(row[:1] + [0.0] + row[1:] for row in reader)
DictWriter()
类要求每行使用字典。如果您只想编写一个初始标题,请使用常规的csv.writer()
并为标题传入一个简单的行:
import csv
with open('combined_file.csv', 'w', newline='') as outcsv:
writer = csv.writer(outcsv)
writer.writerow(["Date", "temperature 1", "Temperature 2"])
with open('t1.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows(row + [0.0] for row in reader)
with open('t2.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows(row[:1] + [0.0] + row[1:] for row in reader)
另一种方法是在跨数据复制时生成字典:
import csv
with open('combined_file.csv', 'w', newline='') as outcsv:
writer = csv.DictWriter(outcsv, fieldnames = ["Date", "temperature 1", "Temperature 2"])
writer.writeheader()
with open('t1.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows({'Date': row[0], 'temperature 1': row[1], 'temperature 2': 0.0} for row in reader)
with open('t2.csv', 'r', newline='') as incsv:
reader = csv.reader(incsv)
writer.writerows({'Date': row[0], 'temperature 1': 0.0, 'temperature 2': row[1]} for row in reader)
在执行循环之前,只需添加一行。此行包含 您的CSV文件头名称
schema = ['a','b','c','b']
row = 4
generators = ['A','B','C','D']
with open('test.csv','wb') as csvfile:
writer = csv.writer(csvfile, delimiter=delimiter)
# Gives the header name row into csv
writer.writerow([g for g in schema])
#Data add in csv file
for x in xrange(rows):
writer.writerow([g() for g in generators])
这对我有用
header = ['row1', 'row2', 'row3']
some_list = [1, 2, 3]
with open('test.csv', 'wt', newline ='') as file:
writer = csv.writer(file, delimiter=',')
writer.writerow(i for i in header)
for j in some_list:
writer.writerow(j)
这不是很简单吗,若我们当时正在创建一个文件,若我们不向它添加数据,那个么我们只添加头文件
conso_file_path = 'your_folder_path\your_file.csv'
# Create File
if not os.path.exists(conso_file_path):
print("No File")
header = ['col_name 1', 'col_name 1', 'col_name 3', 'col_name4']
with open(conso_file_path, 'w') as f:
writer = csv.writer(f)
writer.writerow(header)
您正在向csv文件中写入多少列?请在问题1中具体说明。输入文件2的格式。输出format@nio:发布的代码中有很大一部分来自于为什么文件以二进制模式打开?csv文件显然是文本格式,而不是二进制格式。这可能会在Windows系统上造成问题。@pcarter:在Python 2上,在Windows上以文本模式打开文件会触发与CSV格式不兼容的换行翻译;因此,
csv
模块希望直接处理换行符(根据需要使用\n
和\r\n
),这意味着您必须以二进制模式打开文件。请参阅:如果csvfile是文件对象,则必须在有区别的平台上使用“b”标志打开它。。在Python3上,您将使用。这很有效,很有趣:当文件在a
模式下打开时,writer.writeheader()
将写入两次头,尽管头行已经写入了@洛雷托帕里斯:当然有。附加到现有文件时,不要使用writer.writeheader()
。csv.writer()
对象无法检测到您正在将数据写入现有文件。在Python 3中,需要使用“w”选项打开文件,二进制文件将无法工作。在答复中提及这一点将是有益的。我在这里发现了这个区别:使用file作为变量不是一个好主意。第3行。请改用csvfile或其他文件。@Gorgonzola它只是StackOverflow答案中的一个语法名称。。。它可能是香蕉,但在这种情况下,它只是一个文件