下面的代码创建csv文件,然后向其中添加随机数据。
不知怎的,代码的第一部分在标题下面创建了一个空行。
有人能帮助修复代码以删除这一空白行吗?
谢谢你,
哈雷
header_list = ["Firm", "hour", "unit sold", "product code", "dollar value"]
for i in range(3):
# create file with header -----------
with open(f'D:\2000 transactions\location_id_' + str(i) + '.csv', 'w', newline='') as file:
dw = csv.DictWriter(file, delimiter=',',fieldnames=header_list)
dw.writeheader() # this line create a blank row below header
# adding data to file ---------------
for j in range(5):
n = random.randint(1, 99)
text = str(str(sp100_list['Name'].loc[n]) + ',' + str(random.randint(5, 20)) + ',' + str(random.randint(200, 1000)) + ',' + str(
random.randint(100, 150)) + ',' + str(int(random.random() * 1000000)))
myfile = open(f'D:\2000 transactions\location_id_' + str(i) + '.csv', 'a')
myfile.write('n' + text)
实际上,您在myfile.write('n' + text)
行中添加了意外的空白行,而不是dw.writeheader()
行。您先添加一个n
,它会在文件中添加一个空行。将n
向后移动应该可以解决问题。
代码:
import csv
header_list = ["Firm", "hour", "unit sold", "product code", "dollar value"]
for i in range(1):
with open(f'test{str(i)}.csv', 'w', newline='') as file:
dw = csv.DictWriter(file, delimiter=',',fieldnames=header_list)
dw.writeheader() # this line create a blank row below header
for j in range(5):
with open(f'test{str(i)}.csv', 'a', newline='') as myfile:
text = "1,1"
myfile.write(text+'n')
结果:
Firm,hour,unit sold,product code,dollar value
1,1
1,1
1,1
1,1
1,1
您只能使用csv写入程序而不是DictWriter。以下是示例
使用csv写来写入标题和行
header_list = ["Firm", "hour", "unit sold", "product code", "dollar value"]
for i in range(3):
#create writer here
with open(f'tmp_' + str(i) + '.csv', 'w') as file:
writer = csv.writer(file, delimiter=',')
#write header
writer.writerow(header_list)
# adding data to file ---------------
for j in range(5):
n = random.randint(1, 99)
writer.writerow([sp100_list['Name'].loc[n],random.randint(5, 20),
random.randint(200, 1000),random.randint(100, 150),
int(random.random() * 1000000)])