【问题标题】:Handling last line in Python CSV file reading处理 Python CSV 文件读取中的最后一行
【发布时间】:2016-01-11 00:01:55
【问题描述】:

我目前正在为我的公司开发一个项目。我的第一个任务是一个相对简单的算法,用于读取 CSV 文件,正确格式化,然后将其输出到 CSV 文件中。我正在使用 Python 2.7

我设置的简单方法现在仅将格式化为一行的数据输出为:

'item1','item2','item3','LAST_ITEM',

希望在一行中的输出是:

'item1','item2','item3','LAST_ITEM'

基本上,我不希望最后一个逗号出现在列表的最后一项中。这是我的简单代码:

csvfile = csv.DictReader('csvfile.csv', delimiter=',')
outputFile = open('outputfile.txt')

for row_index, row in enumerate(csvfile):
  outputFile.write("'" + row['location'] + "',")

我知道必须有一种方法可以检查阅读器是否在最后一行,这样我就可以简单地打印除最后一个逗号之外的一行。所以,我一直在阅读很多关于生成器的内容并在谷歌上搜索了很多答案。不过,我不能完全确定如何做到这一点。

【问题讨论】:

  • 您有什么理由尝试在输入上使用csv.DictReader 而不是在输出上使用等价物?另外 - 方便查看 isLast 的含义 - 回答社区需要更多的问题 - 你也会混淆行(可能是行)和列......它是什么?
  • 我很抱歉!!我一直在尝试不同的选项,这只是枚举(csvfile)。只是复制/粘贴不正确。
  • 另外,我只是在这里使用 print 函数而不是 file.write() 作为一种快速测试输出的方法,而不必每次都写入文件。
  • 您需要另外添加所需的输入/输出 - 您遇到的问题(我认为)如果您没有尝试以错误的方式进行测试,这不会是一个问题 :)
  • 感谢您的 cmets。我现在已经添加了所需的输出。这是我第一次在这里提问,谢谢你的建议。

标签: python python-2.7 csv


【解决方案1】:

您正在尝试从输入 CSV 文件的一列中提取值并将这些值输出到 CSV 文件的单行中?

您可以使用join() 一次性完成:

import csv

with open('csvfile.csv') as infile, open('outputfile.txt', 'w') as outfile:
    outfile.write(','.join("'{}'".format(row['location']) for row in csv.DictReader(infile)))
    outfile.write("\n")

或者您可以使用csv.writer 输出到 CSV 文件:

import csv

with open('csvfile.csv') as infile, open('outputfile.txt', 'w') as outfile:
    out_csv = csv.writer(outfile)
    out_csv.writerow(["'{}'".format(row['location']) for row in csv.DictReader(infile)])

【讨论】:

  • 谢谢!虽然输出非常接近我想要的,但它仍然缺少单引号。我所做的只是将最后一行改写为outfile.write(','.join("'"+row['location']+"'" for row in csv.DictReader(infile))),它成功了!
  • @repr0:哦,是的,我错过了报价。我修复了现在使用"'{}'".format() 的答案,我认为这比字符串连接更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 2015-06-10
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多