我有一个包含重复数字和其他数据的文本文件,如下所示:
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条件语句,但是我什么也没做
发布于 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
发布于 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
,然后打开一个新文件。
https://stackoverflow.com/questions/50881167
复制相似问题