我有一个按行分隔的帐号列表,由一个事务记录生成。
如何将此列表合并到一个文件中,该文件只有一个帐户而不是多个帐户(每个帐户记录了多个帐户)?
Python是首选,但我也可以使用C.
答案 0 :(得分:5)
with open(filename) as fin, open(newfilename, 'w') as fout:
fout.writelines(set(fin))
答案 1 :(得分:1)
我不知道你的日志文件是什么样的,但这应该很好用
在python中:
file = open('filename.txt', r+)
accountNos = set(file)
file.truncate()
for x in accountNos:
file.write(x)
file.close()
这将从文件中取出每一行,并将它们存储在一个集合中。集合是一种数据结构,仅存储唯一元素并删除重复项。在第二个for循环中,您将该组的内容写回文件。
答案 2 :(得分:1)
如果您包含示例日志文件和操作系统,那将会很有帮助。
如果您在UNIX环境中,使用awk和sort非常简单。
如果您的日志文件(名为log.txt)包含帐户信息作为每行的第三个字(请参阅下面的日志文件示例):
LOG WARNING 12345 cancelled ....
LOG WARNING 67482 subscribed ....
请参阅下面的示例,其中美元符号为命令提示符:
$ awk '{print $3}' log.txt | sort -u
如果您在Windows环境中,可以下载适用于Windows的cygwin(http://www.cygwin.com/),安装它并从命令提示符运行上述命令。
答案 3 :(得分:1)
如果订单很重要,那么您可以使用collections.OrderedDict
:
from collections import OrderedDict
with open('input') as fin, open('output', 'w') as fout:
uniques = OrderedDict.fromkeys(fin)
fout.writelines(uniques)