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

时间:2018-06-15 18:44:56

标签: python

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

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条件声明,但我没有得到任何地方

2 个答案:

答案 0 :(得分:1)

那么,你想要做的是将var config = { apiKey: "xxxxxxxxxxxxxxx", authDomain: "yyyyyyyyy", databaseURL: "https://yuyuyu.firebaseio.com/", projectId: "demo1233xyz", }; firebase.initializeApp(config); var database = firebase.database(); database.ref("-UserTable/-LGDHSJSKSIUSN178").update({ verified: false }); 的每个部分复制到它自己的输出文件,对吗?我认为,到目前为止,您的代码看起来非常精细。我打算复制它并添加一些我认为可以解决你问题的补充。

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一起添加更简单。)如果我们到达一个空白行(如您的示例所示 - 空行标记不同部分之间的分隔),我们关闭当前文件,增加+,然后打开一个新文件。

答案 1 :(得分:0)

这是一个解决方案(故意未优化以更清楚地公开逻辑):

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