将数据文件附加到 CSV 文件并输出到另一个 CSV 文件

Posted

技术标签:

【中文标题】将数据文件附加到 CSV 文件并输出到另一个 CSV 文件【英文标题】:Append data file to CSV file and output to another CSV file 【发布时间】:2014-02-26 03:12:45 【问题描述】:

这可能是封面,如果有,请道歉。我在搜索中找不到确切的答案。我拥有的基本上是3个文件。第一个是主要短语的文本文件,第二个文件是大约 1600 行和 3 行(城市、州和 zip)的 csv 文件,第三个文件是带有辅助短语的文本文件。

我想要做的是获取文件一(它只有一个短语,例如;信誉管理)并将其附加到 csv 文件中“每一”行的开头,然后从 csv 中删除逗号/制表符文件,然后将第三个文本文件附加到行尾(第三个文本文件也只有一个短语,例如在线声誉公司),然后获取 csv 的第二列,即状态并将其附加到最后一行。

我想要实现的示例输出如下所示:

亚利桑那州凤凰城 87443 的声誉管理 - 查找亚利桑那州的在线声誉公司

声誉管理 Tuscon Arizona 87444 - 联系亚利桑那州的在线声誉公司

声誉管理 Albert Arizona 87445 - 在亚利桑那州查找在线声誉公司

这是我到目前为止的代码,但我被卡住了。它没有删除选项卡,它只是将第一个文本文件附加到输出 csv 中的第一行,而不是其他 1599 行。此外,当它到达类型(secondarykeywordlist)时,我得到一个类型为“_io.TextIOWrapper”的对象没有 len()

任何帮助将不胜感激。

file = open('wordpress_input_file.csv', 'w')
file.write('' + type(mainkeywordlist).title().strip() + ' ' + ''.join(open('data_files/cities/arizona_cities.csv', 'r').readlines()).strip(",\n") + ' - ' + type(concat2).title().strip() + ' ' + type(secondarykeywordlist).title().strip() + '')
file.close()

这是我的输出现在的样子如果我取出二级关键字列表,我会得到一个错误,把它放回去。

亚利桑那州凤凰城 87443 的声誉管理,查找

编辑: 我在 Windows 7 上运行 Python。这是 3 个文件的内容。

文件 1 个文本文件(仅 1 行):信誉管理

文件2个csv文件(1600行3行):

凤凰城,亚利桑那州,87443

凤凰,图斯康,87444

凤凰,阿尔伯特,87445

文件 3 文本文件(仅 1 行):在线声誉公司


找到问题的解决方案:这是现在运行良好的工作代码。感谢大家的贡献。

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

f_in = open("data_files/secondary_keyword.txt", "r")
postfix = "%s\n" % (f_in.read().strip())

f_in = open('data_files/cities/texas_cities.csv', 'r')
f_out = open('wordpress_input_file.csv', 'w')
for line in f_in.readlines():
    f_out.write(prefix.title() + ' ' + line.strip().replace(","," ") + ' - ' +      type(concat2).title().strip() + ' ' + postfix.title().strip() + ' In ' + line.split(",")[1]+"\n" + '')
f_in.close()
f_out.close()

【问题讨论】:

如果您说您使用的是 Windows、Linux 还是 Mac,这将很有用。此外,如果您显示三个文件中的每一个的 2-3 行,以及会产生什么输出。此外,如果对可以使用的编程语言和/或工具有限制...... 【参考方案1】:

您需要处理每一行

类似:

with open("File1",'r') as f:
    prefix = f.read().strip()

with open("File", "r") as f:
    postfix = "%s\n" % (f.read().strip())

with open("csvfile", "r") as f:
   with open("outfile", "w") as g:
       for line in f.read():
           txt =line.strip().replace(',',' ')
           g.write( ' '.join([prefix, txt, postfix]) 

【讨论】:

我运行了这段代码,一开始 = 我得到一个语法错误(使用 f =) 抱歉 - 还在适应新的 with 语法 - 我已经在上面更新了。【参考方案2】:

你为什么不直接打开第一个和第三个文件,分别在前缀和后缀变量下获取表达式,然后打开第二个文件(有 1600 行)并将处理后的输出写入第四个文件(out.txt -这将包含您想要的结果)。 代码(在您获取前缀和后缀之后)将是:

f_in = open('file2.txt', 'r')
f_out = open('out.txt', 'w')
for line in f_in.readlines():
    f_out.write(prefix + ' ' + line.strip().replace(","," ") + \
    " " + suffix + " " +         line.split(",")[1]+"\n")
f_in.close()
f_out.close()  

【讨论】:

以上是关于将数据文件附加到 CSV 文件并输出到另一个 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章

将日期列添加到python中的附加输出csv文件

如何跳过 CSV 文件的列

比较 2 个 CSV 巨大的 CSV 文件并使用 perl 将差异打印到另一个 csv 文件

将 60K csv 的输出合并并写入一个 csv

Access数据表怎么导出.csv格式的文件并附加到oracle数据库?

使用 cell2csv 进行输出时将输出保存到另一个目录