似乎在使用编写器写入CSV文件时,十进制的0会自动被忽略。例如
out.update({movieID:"%.1f" % (round(sum(rating)/float(len(rating)),1))})
for key in sorted(out.keys()):
writer1.writerow({'movieID': int(key), 'avg_rating': out[key]})
我在编写CSV时指定了一个十进制小数,我的预期输出
3.0
3.3
实际输出为CSV
3
3.3
是否始终保留此值?我还尝试了quoting =非数字
答案 0 :(得分:0)
尝试一下:
import csv
with open('test.csv', mode='w') as csv_file:
fieldnames = ['#', 'Salary']
writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
writer.writeheader()
writer.writerow({'#': '32', 'Salary': '100.40'})
writer.writerow({'#': '33', 'Salary': '100.4400'})
writer.writerow({'#': '34', 'Salary': '101.40'})
writer.writerow({'#': '35', 'Salary': '105.430'})
使用记事本打开文件时,收到以下消息:
#,Salary
32,100.40
33,100.4400
34,101.40
35,105.430
如果使用Excel打开,则可能的解决方案是将带有数字的列显式导入为文本。
请注意,Excel中的文本会自动左对齐,而数字则右对齐。公式仍然可以在文本上使用,因为Excel足够“明智”,可以将它们正确解析为数字。