问题描述
我想从 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()