python CSV writer - 格式化

标签 python csv

关于如何使用 python csv 模块将数据正确写回 CSV 文件的快速问题。目前,我正在导入一个文件,提取一列日期并使用 datetime 模块制作一列 days_of_the_week 。然后我想写出一个新的 csv 文件(或覆盖单个文件),其中包含一个原始元素和新元素。

with open('new_dates.csv') as csvfile2:
    readCSV2 = csv.reader(csvfile2, delimiter=',')
    incoming = []
    for row in readCSV2:
         readin = row[0]
         time = row[1]
         year, month, day = (int(x) for x in readin.split('-'))
         ans = datetime.date(year, month, day)
         wkday = ans.strftime("%A")
         incoming.append(wkday)
         incoming.append(time)
with open('new_dates2.csv', 'w') as out_file:
    out_file.write('\n'.join(incoming))

输入文件如下所示:

2017-03-02,09:25
2017-03-01,06:45
2017-02-28,23:49
2017-02-28,19:34

使用此代码时,我最终得到一个如下所示的输出文件:

Friday
15:23
Friday
14:41
Friday
13:54
Friday
7:13 

我需要的是一个如下所示的输出文件:

Friday,15:23
Friday,14:41
Friday,13:54
Friday,7:13 

如果我将 out_file.write 中的分隔符更改为逗号,我只会获得每列的一个数据元素,如下所示:

Friday  15:23   Friday 14:41  Friday 13:54  ....

如有任何想法,我们将不胜感激。谢谢!

最佳答案

由于不太清楚您想要什么格式,我假设您只需要在 wkdaytime 之间添加一个空格。为了快速修复,不要像示例中那样单独附加 wkdaytime,而是将它们附加在一起:

...
    incoming.append('{} {}'.format(wkday,time))
...

或者,将您的传入构建为列表列表:

...
    incoming.append([wkday,time])
...

并将您的写入更改为:

with open('new_dates2.csv', 'w') as out_file:
    out_file.write('\n'.join([' '.join(t) for t in incoming]))

关于python CSV writer - 格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43638280/

相关文章:

python - Pandas:将分组中的唯一项放入单独的行而不是数组中

python - for 循环如果变量存在 - 如何使其变得Pythonic?

python - Pandas 的 read_csv C 引擎有什么方法可以忽略或替换 Unicode 解析错误吗?

mysql - secure-file-priv 阻止 INTO OUTFILE 命令

php - 如何导出动态生成的临时 csv 文件?

python - 如何测试两个稀疏数组是否(几乎)相等?

python - 使用 Webdriver 和 PhantomJS 记录 HTTP 流量

python - 使用 AJAX 处理 Django 表单验证错误

python - 我们如何根据列循环数据框并根据条件检索行

powershell - 通过 PowerShell 将所有已安装的软件分组到一个单元中