>我在下面有一个列表列表:
mylist = [['HBASE-5727', 2, '66772ce043', '1044d5e353'],
['HBASE-5286', 2, '180b41f518', '0132176084'],
['HBASE-532', 3, 'ef5bb6f316', 'fb2db8cdaa']
]
我需要将该列表保存到CSV文件中。我写了这段代码:
with open("numberofbugs.csv",'w') as csvfile:
header = ['bug_id', 'number_of_bugs', 'first_commitID', 'last_commitID']
writers = csv.writer(csvfile)
writers.writerow(header)
for item in mylist:
writers.writerow(item)
但是,第二个子列表中的第四个元素写为整数132176084
。以下是生成的 CSV 文件:
bug_id | number_of_bugs | first_commitID | last_commitID |
--------------------------------------------------------------
HBASE-5727 | 2 | 66772ce043 | 1044d5e353 |
HBASE-5286 | 2 | 180b41f518 | 132176084 |
HBASE-532 | 3 | ef5bb6f316 | fb2db8cdaa |
为什么会发生这种情况以及如何保持元素的类型与列表中写入的元素类型(如string
一样(,因此值仍然0132176084
而不是132176084
?
按照建议,您可以通过用="....."
将它们括起来来假装您的第三列和第四列是公式,如下所示:
import csv
mylist = [['HBASE-5727', 2, '66772ce043', '1044d5e353'],
['HBASE-5286', 2, '180b41f518', '0132176084'],
['HBASE-532', 3, 'ef5bb6f316', 'fb2db8cdaa']
]
with open("numberofbugs.csv", 'w', newline='') as csvfile:
header = ['bug_id', 'number_of_bugs', 'first_commitID', 'last_commitID']
writers = csv.writer(csvfile)
writers.writerow(header)
for item in mylist:
item[2:4] = ['="{}"'.format(c) for c in item[2:4]]
writers.writerow(item)
在文本编辑器中查看时,生成的numberofbugs.csv
文件将如下所示:
bug_id,number_of_bugs,first_commitID,last_commitID
HBASE-5727,2,"=""66772ce043""","=""1044d5e353"""
HBASE-5286,2,"=""180b41f518""","=""0132176084"""
HBASE-532,3,"=""ef5bb6f316""","=""fb2db8cdaa"""