【问题标题】:Python Append Data Line By Line To Second Column Of CSV FilePython 将数据逐行追加到 CSV 文件的第二列
【发布时间】:2014-04-11 03:02:18
【问题描述】:

我需要一些帮助来将我的数据附加到输出 .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 文件中,然后生成帖子的正文并需要将城市和州标题附加到文件的第一列 @987654325 @。我需要将城市和州标题从上到下完全逐行附加到此文件中。所以我的最终输出将是第 1 列是城市和州标题,第 2 列是正文内容。有人可以帮我弄这个吗?我希望我对此有所了解。如果不是,请告诉我,我会尝试澄清更多。感谢您的帮助。

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

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>

【问题讨论】:

  • 如果你展示一个输入文件的样子和期望的输出应该是什么的例子,问题会更清楚。
  • 我用一些示例数据更新了问题。

标签: python csv append


【解决方案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 从第一个文件的行中删除换行符,这样组合的行就不会分成两行。

【讨论】:

  • 首先感谢您的回复。我正在使用 Python 3.3.2。 import izip 在版本 3.3.2 中是否存在问题?我收到无法导入 izip 的错误。
  • 是的,对不起,我忘了对此发表评论。我的代码假定使用 python 2。如果您使用的是 Python 3,则默认情况下 zip 将作为 itertools.izip 工作。只需删除第一行的导入,并将izip 更改为zip
  • 完美!谢谢迈克尔,你找到了解决我问题的方法。做得好!它现在运行良好。
猜你喜欢
  • 2015-11-22
  • 2018-01-21
  • 2011-01-22
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多