首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将文本文件中的重复数字打印到不同的文件- python?

将文本文件中的重复数字打印到不同的文件- python?
EN

Stack Overflow用户
提问于 2018-06-16 02:44:56
回答 2查看 108关注 0票数 0

我有一个包含重复数字和其他数据的文本文件,如下所示:

BMW  11   N_123
Benz 123  N_123
Ford 342  N_123

Fr   11   N_126
Benz 123  N_126
Ford 342  N_126

Toyta 11   N_124
Nissan 12  N_124
Honda  145 N_124  

我想将带有关联信息的重复编号写入不同的文本文件,如下所示:

(同一文件中没有相同的数字)

文件1

BMW    11      N_123 
Fr     11      N_126
Toyota 124     N_124 

文件2

Benz   123   N_123
Benz   123   N_126
Nissan 12    N_124 

文件3

Ford  342   N_123
Ford  12    N_126
Honda 145   N_124 

我的代码:

f = open('test.txt','rU')
for line in f.readlines():
    line=line.strip()
    #print line
    parts = line.split(" ")
    (model,data,number) = [parts[0], parts[1], parts[2]]
     all_data = [parts[0], parts[1], parts[2]]

我被困在这里..。做一个字典?,我试着用IF条件语句,但是我什么也没做

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-16 04:37:01

这里有一个解决方案(有意取消优化,以便更清楚地暴露逻辑):

lines = []
with open('test.txt','r') as fp:
    for line in fp.readlines():
        entry = line.rstrip().split()
        if entry:
            lines.append(entry)

file = 1
while len(lines):
    unique = []
    for item in lines:
        add = True
        for entry in unique:
            if item[2] == entry[2]:
                add = False
        if add:
            unique.append(item)
    for line in unique:
        lines.remove(line)
    with open(str(file) + '.txt', 'w') as fp:
        for item in unique:
            fp.write("{} {} {}\n".format(item[0], item[1], item[2]))
    file = file + 1
票数 0
EN

Stack Overflow用户

发布于 2018-06-16 03:07:20

所以,您想要做的是将test.txt的每个部分复制到它自己的输出文件中,对吗?我认为,到目前为止,您的代码看起来还不错。我将复制它,并添加一些我认为可以解决您的问题的内容。

f = open('test.txt','rU')
filenum = 1
outfile = open('output' + str(filenum) + '.txt', 'w')
for line in f.readlines():
    if (len(line) == 0): # if line is blank
        outfile.close()
        filenum += 1
        outfile.open('output' + str(filenum) + '.txt', 'w')
    else:
        line=line.strip()
        #print line
        parts = line.split(" ")
        model,data,number = parts[0], parts[1], parts[2]
        outfile.write( "%s\t%s\t%s\n" % (model, data, number) )
outfile.close()

我添加的第一件事是filenum,它计算您要打印到哪个输出文件。然后,我打开一个文件开始写入。

现在,我们遍历test.txt。对于每一行(这是在else代码块中),我们只使用您编写的代码-解释输入文件。然后,我们将其写入输出文件(我使用字符串格式化,因为它比简单地使用+将字符串添加在一起更简单)。如果我们到达一个空行(就像在你的例子中一样--一个空行标志着不同部分之间的分隔),我们关闭当前文件,递增filenum,然后打开一个新文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50881167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档