将数据文件附加到 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 文件的主要内容,如果未能解决你的问题,请参考以下文章
比较 2 个 CSV 巨大的 CSV 文件并使用 perl 将差异打印到另一个 csv 文件