为什么列表的字符串元素在保存在 CSV 文件中时转换为整数



>我在下面有一个列表列表:

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"""

最新更新