使用定界符将 Text .txt 文档转换为 CSV .csv

Converting a Text .txt document to CSV .csv Using a Delimiter

我想从 TXT 文件创建 CSV。我有一个文本文件,其中包含由反斜杠分隔的行(300 行以上)。我希望每一行都是一个单独的行,每个反斜杠是一个单独的新列。

文本文件如下所示:

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

我希望 CSV 看起来像:

Example 1 Example 2 Example 3 Example 4
Test 1 Test 2 Test 3 Test 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()