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

时间:2014-03-07 19:29:03

标签: python csv append

我需要一些帮助才能将我的数据附加到输出.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文件中,然后生成帖子的主体,并且需要将城市和州名称附加到文件的第一列{{ 1}}。我需要将这个城市和州名称从上到下完全逐行追加到此文件中。所以我的最终输出将是第1列是城市和州名称,第2列是正文内容。有人可以帮我弄这个吗?我希望我对此有所了解。如果没有,请告诉我,我会尝试澄清一点。谢谢你的帮助。

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

import_this_file_into_wordpress.csv

1 个答案:

答案 0 :(得分: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,您可以同时打开所有三个文件(两个输入文件和一个目标文件),当块结束时,它们将再次关闭。

for循环将在每次迭代中从第一个输入文件中取一行,从第二个输入文件中取一行,用逗号将它们组合在一起,并将其附加到输出文件。 rstrip从第一个文件的行中删除换行符,以便合并的行不会分成两行。