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

Python将数据逐行附加到CSV文件的第二列,python,csv,append,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/generat

我需要一些关于将数据附加到输出.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
<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>
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>
这就为第一列中的城市和州标题创建了我所需要的内容。我需要做的是将此数据附加到生成的下一个数据中。因此,我的第一列是城市和州标题,我的下一列需要是在下面代码中指定的输出文件中生成的数据

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()

鉴于您已经将数据写入了两个文件,您可以从磁盘读取这些文件,并将每一行压缩到一起,如下所示:

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))
通过将
一起使用,可以同时打开所有三个文件(两个输入文件和一个目标文件),当块结束时,所有文件都将再次关闭


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

如果您展示了一个输入文件的样子和所需输出的示例,问题会更清楚。我用一些示例数据更新了问题。首先感谢您的回答。我正在使用Python 3.3.2。版本3.3.2中的导入izip是否存在问题?我收到一个错误,无法导入
izip
。是的,很抱歉我忘了对此发表评论。我的代码假定为python 2。如果您使用的是Python3,那么默认情况下,
zip
充当
itertools.izip
。只需删除第一行的导入,并将
izip
更改为
zip
。完美!谢谢你,迈克尔,你已经找到了解决我问题的办法。干得好!它现在工作得很好。