Python逐行追加数据到CSV文件的第二列

0 投票
1 回答
1786 浏览
提问于 2025-04-17 21:20

我需要一些帮助,把我的数据添加到输出的 .csv 文件里。我现在的情况是,我从城市和州的数据生成一个 .csv 文件,内容是逐行写入的。这个文件的内容必须是从上到下的顺序,而不是乱七八糟的。下面是生成这个只有一列的 .csv 文件的代码。

f_in = open("data_files/main_keyword.txt",'r')
prefix = f_in.read().strip()

f_in = open('data_files/states/' + random.choice(list(open('data_files/generate_what_state.txt'))).replace("\n", "") + '.csv', 'r')
f_out = open('data_files/titles.csv', 'w')
for line in f_in.readlines():
    f_out.write(prefix.title() + ' ' + line.split(",")[1]+"" + ' ' + line.split(",")[2]+"" + ' - ' + random.choice(list(open('data_files/end_keywords.txt'))).replace("\n", "").title() + ' In ' + line.split(",")[0]+"" + '')
    f_out.write('\n')
f_in.close()

上面代码的输出示例数据:

Air Duct Cleaning Addison Texas - Cleaning Air Ducts In Dallas
Air Duct Cleaning Allen Texas - Cost Of Air Duct Cleaning In Dallas
Air Duct Cleaning Balch Springs Texas - Cleaning Air Ducts In Dallas
Air Duct Cleaning Carrollton Texas - Cleaning Air Ducts In Dallas

这段代码创建了我需要的城市和州的标题,放在第一列。接下来我需要做的是把这些数据添加到生成的下一个数据中。所以我的第一列是城市和州的标题,第二列需要是下面代码中指定的输出文件生成的数据。

f_in = open("data_files/main_keyword.txt",'r')
prefix = f_in.read().strip()

f_in = open('data_files/states/' + random.choice(list(open('data_files/generate_what_state.txt'))).replace("\n", "") + '.csv', 'r')
f_out = open('import_this_file_into_wordpress.csv', 'w')
for line in f_in.readlines():
    f_out.write(';<p>' + random.choice(list(open('data_files/content.txt'))).replace("\n", "") + '</p>' + '\n')
f_in.close()

上面代码的输出示例数据:

<p>This is a line of text generated.</p>
<p>This is a line of text generated.</p>
<p>This is a line of text generated.</p>
<p>This is a line of text generated.</p>

所以我现在的做法是生成城市和州的标题,并把它们保存到一个 .csv 文件里,然后生成帖子内容,并需要把城市和州的标题添加到文件 import_this_file_into_wordpress.csv 的第一列。我需要把城市和州的标题从上到下逐行添加到这个文件里。最终的输出应该是第一列是城市和州的标题,第二列是内容。有人能帮我吗?我希望我说得清楚。如果不清楚,请告诉我,我会再解释得更清楚一些。谢谢你的帮助。

最终文件中数据输出的示例:

Air Duct Cleaning Addison Texas - Cleaning Air Ducts In Dallas,<p>This is a line of text generated.</p>
Air Duct Cleaning Allen Texas - Cost Of Air Duct Cleaning In Dallas,<p>This is a line of text generated.</p>
Air Duct Cleaning Balch Springs Texas - Cleaning Air Ducts In Dallas,<p>This is a line of text generated.</p>
Air Duct Cleaning Carrollton Texas - Cleaning Air Ducts In Dallas,<p>This is a line of text generated.</p>

1 个回答

1

假设你已经把数据写入了两个文件,现在你可以从磁盘上读取这些文件,并把每一行合并在一起,像这样:

from itertools import izip

file1 = 'data_files/titles.csv'
file2 = 'import_this_file_into_wordpress.csv'
dest = 'combined.csv'

with open(file1) as f1, open(file2) as f2, open(dest, 'w') as dest:
    for [part1, part2] in izip(f1, f2):
        dest.write("%s,%s" % (part1.rstrip(), part2))

使用 with 这个方法,你可以同时打开三个文件(两个输入文件和一个输出文件),当这个代码块结束时,所有的文件都会自动关闭。

在这个循环中,每次都会从第一个输入文件中取出一行,从第二个输入文件中也取出一行,然后把它们用逗号连接起来,再把结果添加到输出文件中。rstrip 这个方法会去掉第一个文件中每行末尾的换行符,这样合并后的行就不会被分成两行了。

撰写回答