使用分隔符将 Text .txt 文档转换为 CSV .csv

问题描述

我想从 TXT 文件创建 CSV。我有一个用反斜杠分隔的行(300 行+)的文本文件。我希望每一行都是一个单独的行,每个反斜杠都是一个单独的新列。

文本文件如下:

example 1\example 2\example 3\example 4
test 1\test 2\test 3\test 4

我希望 CSV 看起来像:

示例 1 示例 2 示例 3 示例 4
测试 1 测试 2 测试 3 测试 4

到目前为止我有

import csv
with open('Report.txt') as report:
    report_txt = report.read()
    with open('Report.csv','w',newline='') as csvfile:
        writer = csv.writer(csvfile)
        writer.writerow(report_txt)

我知道我需要使用 \ 作为分隔符,但我不确定如何使用。感谢您的帮助!

解决方法

像这样定义你的分隔符(转义 \):

reader = csv.reader(open("Report.csv"),delimiter="\\")

代码:

import csv
with open('Report.txt') as report:
    reader = csv.reader(report,delimiter="\\")
    with open('Report_output.csv','w',newline='') as csvfile:
        writer = csv.writer(csvfile)
        for line in reader:
            writer.writerow(line)
,

首先,您必须根据分隔符拆分字符串。您可以使用 split 运算符或正则表达式来实现这一点。

import csv
    
    with open('file.txt','r') as in_file:
        stripped = (line.strip() for line in in_file)
        lines = (line.split("\\") for line in stripped if line)
    

然后几乎将其写入 csv。

with open('report.csv','w') as out_file:
            writer = csv.writer(out_file)
            writer.writerows(lines)

相应地调整您的代码。这个概念几乎相同。注意双反斜杠是为了说明转义字符。

,

如果您只是想将该文本转换为 CSV,则可以将每个“\”字符替换为“;”并且您将拥有一个有效的 CSV 文件。

另外,如果你想在重新导出到 CSV 之前对解析的数据做一些事情,你可以逐行读取文件并使用带有“\”的 split() 方法,然后重新加入并逐行写入,就像这里:

with open('in.txt') as input_file:
    with open('out.csv','a') as output_file:
        txt_line = input_file.readline()
        while txt_line:
            cells = txt_line.split("\\")
            
            # Do something with each cell...
            
            csv_line = ";".join(cells)
            
            output_file.write(csv_line)
            txt_line = input_file.readline()