Python 创建帐号的单个实例的文件

Python 创建帐号的单个实例的文件,python,string,Python,String,我有一个由交易日志生成的账号列表,以行分隔 如何将此列表合并到一个文件中,使每个帐户只出现一次而不是多次(每个帐户记录了多个事务) Python是首选,但我也可以使用C。我不知道您的日志文件是什么样子,但这应该可以很好地工作 with open(filename) as fin, open(newfilename, 'w') as fout: fout.writelines(set(fin)) 在python中: file = open('filename.txt', r+) acco

我有一个由交易日志生成的账号列表,以行分隔

如何将此列表合并到一个文件中,使每个帐户只出现一次而不是多次(每个帐户记录了多个事务)


Python是首选,但我也可以使用C。

我不知道您的日志文件是什么样子,但这应该可以很好地工作

with open(filename) as fin, open(newfilename, 'w') as fout:
    fout.writelines(set(fin))
在python中:

file = open('filename.txt', r+)
accountNos = set(file)

file.truncate()
for x in accountNos:
    file.write(x)

file.close()

这将从文件中取出每一行,并将它们存储在一个集合中。集合是一种数据结构,它只存储唯一的元素并删除重复项。在第二个for循环中,您将该集合的内容写回文件。

如果您包含一个示例日志文件和您的操作系统,这将非常有用

如果您在UNIX环境中,使用awk和sort非常简单

如果您的日志文件(称为say log.txt)在每行的第三个字中包含帐户信息(请参阅下面的日志文件示例):

请参见下面的示例,命令提示符为美元符号:

$ awk '{print $3}' log.txt | sort -u

如果您在windows环境中,可以下载适用于windows的cygwin(),安装它并从命令提示符下运行上述命令。

如果顺序很重要,则可以使用
集合。OrderedDict

from collections import OrderedDict

with open('input') as fin, open('output', 'w') as fout:
    uniques = OrderedDict.fromkeys(fin)
    fout.writelines(uniques)

文件是可编辑的,因此您可以将其传递给
set
构造函数
from collections import OrderedDict

with open('input') as fin, open('output', 'w') as fout:
    uniques = OrderedDict.fromkeys(fin)
    fout.writelines(uniques)