将 .txt 文件转换为 CSV

时间:2021-04-10 17:09:38

标签: python csv export-to-csv

我需要能够读取 .txt 文件并将其中的数据输出到 CSV 文件中的代码。 .txt 文件的数据格式如下:

Jeff/Terry/01-10-2020/1-2
+Tom/02-10-2020
-Jeff/03-10-2020

我需要将数据写入一个 CSV 文件中,每次遇到“/”时,字符串都会被拆分和分隔。所以 CSV 文件看起来像这样:

<头>
A 列 B列 C 列 D 列
杰夫 特里 01-10-2020 1-2
+汤姆 02-10-2020
-杰夫 03-10-2020

此外,我还需要代码来将这个 CSV 文件数据写回另一个相同格式的 .txt 文件,用“/”分隔单元格的数据。

我目前有这个:

import csv
with open ("data.txt", "r") as in_file:
    stripped = (line.strip() for line in in_file)
    lines = (line.split("/") for line in stripped if line
    open ("data.csv", "w") as out_file:
             writer = csv.writer(out_file)
             writer.writerow(('first', 'second'))
             writer.writerows(lines)

目前它与我需要的功能相去甚远,而且在最后一行 open ("data.csv", "w") as out_file: 的“o”打开时,它也给了我语法错误。

1 个答案:

答案 0 :(得分:1)

这里有一些语法错误。

  • 第 4 行缺少右括号:lines = (line.split("/") for line in stripped if line)
  • 第 5 行应以 with 开头:with open("data.csv", "w") as out_file:
  • 此外,最好将第 5 行放在第 2 行的 with 块之外。
  • 第 6 行到第 8 行应该缩进一个,而不是两个。

尝试以下操作(请参阅 documentation):

import csv
with open("data.txt", "r", newline='') as in_file:
    lines = list(csv.reader(in_file, delimiter="/"))
with open("data.csv", "w", newline='') as out_file:
    writer = csv.writer(out_file, delimiter="/")
    writer.writerow(('first', 'second'))
    writer.writerows(lines)