【问题标题】:creating a csv file from a function result, python从函数结果创建一个csv文件,python
【发布时间】:2016-10-14 10:45:00
【问题描述】:

我正在使用 {Python module for converting PDF to text} 中的 pdf 到 csv 函数,我想知道现在如何将结果导出到驱动器上的 csv 文件?我尝试在函数中添加

with open('C:\location', 'wb') as f:
    writer = csv.writer(f)
    for row in data:
        writer.writerow(row)

但是生成的 csv 文件每行有一个字符,而不是我在 python 中打印数据时的行。

【问题讨论】:

  • data的类型是什么?如果它是一个字符串,那么您只是在遍历字符并且实际上每行写入一个字符。
  • 它是一个字符串。有没有一种方法可以让我创建一个具有数据确切结果的 csv 而无需迭代
  • 这一切都取决于数据的格式。如果它在行中,您可以尝试通过行分隔符lines=data.split("\n") 将其拆分。另外,您必须将序列传递给writer.writerow。见docs.python.org/3.4/library/csv.html#writer-objects
  • @AndreiCozma 请注意,反斜杠是转义字符,因此您可能需要在此处使用双反斜杠来插入文字:with open('C:\location', 'wb') as f:

标签: python csv pdf


【解决方案1】:

如果您每行打印一个字符,那么您所拥有的是一个字符串。你的循环

for row in data:

翻译成

for character in string:

所以你需要把你的字符串分解成你想写在一行上的块。您也许可以使用 data.split() 之类的东西,但如果不查看更多代码和数据,就很难说。

针对您的评论: 是的,您可以将数据转储到 CSV……如果它符合 CSV 的规则。如果您的数据用逗号分隔,每一行都以换行符结束,那么您只需将数据写入文件即可。

with open ("file.csv",'w') as f:
  f.write(data)

这只有在您的数据符合 csv 规则时才有效。

【讨论】:

  • 很难将整个结果传递到这里,因为它有 195 页。整个 csv 的旅游解决方案确实有效 Bravosierra99,但我认为数据不符合 csv 的规则。例如,打印数据中的这 3 行:
  • SMC CORPORATION;(6273);67,369,359;0 SHINKAWA LTD.;(6274);20,047,500;0 NAVITAS CO.,LTD.;(6276);5,722,500;0 在我的 csv 文件中:
  • 分布在 5 列上,而不是新列没有从 ';' 开始是在数据中。为 3 cmets 道歉
  • 那么您还有什么问题?数据没有进入正确的行吗?
  • 我认为行是正确的,但我只是没有用“;”分隔的列这意味着某些单元格包含我无法使用的数据
猜你喜欢
  • 1970-01-01
  • 2017-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
相关资源
最近更新 更多