我需要使用另一个CSV文件中的部分数据动态创建.txt文件。 csv文件包含 -
"考克斯的巴扎尔是世界上最长的天然海滩。沙滩 在考克斯的巴扎尔是一个不间断的125公里沙滩海滩,温柔 它位于吉大港工业港口以南150公里处。
孙德尔本斯是一个自然区域,包括孟加拉国南部和印度西孟加拉邦的一小部分。它是世界上最大的潮汐盐生红树林单块"
我需要从这个csv创建两个文本文件。由于这两段之间有一条新线,我需要根据段落划分csv文件。如果有3个段落,则会有3个不同的.txt文件。虽然我是python的新手,但我的代码如下 -
import csv
with open('INPUT_FILE.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row['text'])
我知道如何检测要使用的新行if not row.strip():
。但我不能在这两个代码之间做出正确的条件。或者有更好的解决方案吗?任何形式的帮助将不胜感激。我有点被困在这里。提前谢谢!
答案 0 :(得分:0)
输入不是CSV(逗号分隔值)格式,而是纯文本。因此,您不必担心csv
模块。
打开输入文件,读取一行,如果不是空行,打开一个outfile并将行写入。
您已经知道如何使用strip()
检测空白行,因此您可以这样写:
file_count = 1
with open('INPUT_FILE.csv') as infile:
for line in infile:
if line.strip():
with open('output_file_{}.txt'.format(file_count), 'w') as outfile:
outfile.write(line)
file_count += 1
这假定每个段落由一行组成。
另一种方法是使用itertools.groupby()
。这样可以轻松处理每个段落的多行:
from itertools import groupby
file_count = 1
with open('INPUT_FILE') as infile:
for k, lines in groupby(infile, key=lambda line: line.strip() != ''):
if k:
with open('output_file_{}.txt'.format(file_count), 'w') as outfile:
outfile.writelines(lines)
file_count += 1