【问题标题】:csv.writer writing each line into separate cell/columncsv.writer 将每一行写入单独的单元格/列
【发布时间】:2021-08-13 04:17:57
【问题描述】:

Objective:从大文本文件中提取每个段落并将其存储在 .csv 文件中。 new line("\n") 用作分隔符。

这是我正在使用的代码:

import csv
input_file = open('path', 'r')
output_file = open('path', 'a+')
writer = csv.writer(output_file)
list = []
for line in input_file:
    if line != "\n":
        list.append(line)
    else:
        writer.writerow(list)
        list.clear()

这里的目标是解析每一行并将其附加到一个列表中,直到遇到"\n",并将列表中存在的内容存储到 .csv 文件中的single cell 中。

代码运行良好,但由于某种原因,每个 line 都打印在单独的列/单元格中,而不是将整个 paragraph 打印到单个单元格中。

预期输出:
row 1:this is stackoverflow
使用python语言。

当前输出: row 1:这是stackoverflow |使用python语言。

我在这里错过了什么?

【问题讨论】:

  • 我发现有两个问题。 input_file 中的 每一行 都会以 \n 字符结尾,这就是 for line in input_file: 的工作方式(即换行符分隔文件中的行)。其次,您应该始终使用open(..., newline='') 打开CSV 文件,如csv 模块的documentation 所示。
  • 您应该在您的minimal reproducible example 中包含一个input_file 的最小示例。

标签: python csv file export-to-csv


【解决方案1】:

writerow 方法将内容写入单行,即同一行中单独列中的每个元素。

这对你来说不是有用的吗?

import csv

with open(input_path, 'r') as f:
    paragraphs = f.read().split('\n\n')

with open(output_path, 'w') as f:
    writer = csv.writer(f)
    writer.writerows(enumerate(paragraphs))

【讨论】:

    猜你喜欢
    • 2013-02-14
    • 2016-07-30
    • 2017-11-20
    • 2021-02-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 2018-08-30
    相关资源
    最近更新 更多