如何在python中将前导零保留在写入CSV文件时

2024-04-24 16:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一些代码可以读取HTML文件的列表,从每个文件中获取一些信息,然后将它们显示在CSV文件中。在

其中一部分是使用文件名中的数字来显示数据行来自哪个小时(例如,文件名是Report_H1.html)。但是,为了让这些数字以正确的顺序显示,我在每个数字中填充了0,使它们都有2个小数位。在

将这些写入CSV文件时,前导的0将被删除。我怎样才能防止这种情况发生?在

将代码编辑为导致我的问题的部分:

import re
import csv
import os

BASE_DIRECTORY = "C:\\Users\\MHE36\\Documents"
fileList = []

for (dirpath, dirnames, filenames) in os.walk(BASE_DIRECTORY):
    for f in filenames:
        if 'html' in str(f):
            e = os.path.join(str(dirpath), str(f))
            boxName = os.path.dirname(e)
            box = os.path.basename(boxName)
            fileDict = {}
            fileList.append(fileDict)
            match = re.search(r'\d+', f)
            if match:
                fileDict['Hour'] = str(match.group(0).zfill(2))

with open('C:\\Users\\MHE36\\Documents\\test.csv', 'w') as f:
    w = csv.DictWriter(f, ['Hour'])
    w.writeheader()
    for fileDict in fileList:
        w.writerow(fileDict)

print(fileList)
print(fileDict)

这是打印命令的输出:

^{pr2}$

在上面的prints中,我可以看到前面的0是按我的需要添加的。但是,在CSV文件中,我得到了以下信息:

Hour                
1   

我要的是:

Hour                
01  

提前谢谢。在


Tags: 文件csvpath代码inimportforos
1条回答
网友
1楼 · 发布于 2024-04-24 16:24:25

您的问题与Python的csv模块无关(因为您会发现直接在代码编辑器中读取csv文件),而是Excel考虑了不带引号的数字以及数字。在

我不使用也没有Excel(这里是linux用户),所以我不能再次检查,但是在创建writer时传递quoting=csv.QUOTE_ALL应该可以解决这个问题(这将在所有的数字周围添加引号字符,因此Excel应该将它们视为字符串,而不要使用它们)

文件:https://docs.python.org/3/library/csv.html#csv.writer

注意:如果您只想引用一些字段,那么在构建fileDict时,您必须手动这样做。在

相关问题 更多 >