我有一个包含单词和数字的文件以及一些只有单词的文件。第一个文件如下所示:
Cow; 39402
Horse; 2039
Pig; 2494
Snake; 39485
Monkey; 9309348
第二个文件如下:
Monkey
Horse
Bird
Pig
Donkey
Monkey
我想将第一个文件的编号添加到第二个文件的文字中。如您所见,并非第二个文件中的所有项都是第一个文件的一部分。在这种情况下,我想打印没有数字的单词。所以我的最终txt文件将如下所示:
Monkey; 9309348
Horse; 2039
Bird
Pig; 2494
Donkey
Monkey; 9309348
Cow; 39402
这是我试过的:
f = open("wordsonly.txt", "r")
flist = f.readlines()
d = open("wordsandnumbers.txt", "r")
dlist = d.readlines()
nf = open("finalfile.txt", "w")
for line in f:
for item in dlist:
newitem = item.rstrip('\n')
if newitem in line:
splitline = newitem.split(';')
newline = line.rstrip('\n')+';'+splitline[1]+'\n'
nf.write(newline)
break
a += 1
lengthlist = len(dlist)
if line.rstrip('\n') not in newline:
if a == lengthlist:
nf.write(line)
但是,这段代码在某些情况下会给出太多结果(每行超过一个),我不明白为什么......
(我简化了我的代码,所以可能会有一些小错误。我很抱歉)
答案 0 :(得分:1)
首先您应该为所有单词创建dict
,其中数字为值,单词为键
with open("wordsandnumbers.txt", "r") as file1:
numbers = {k:v.strip() for k,v in (line.split(';') for line in file1)}
然后您可以创建新文件,写入任何单词(如果没有数字)或带有数字的单词
with open("wordsonly.txt", "r") as f:
with open("finalfile.txt", "w") as nf:
for line in f:
line = line.strip():
if line in numbers:
nf.write('{}; {}\n'.format(line, numbers[line])
else:
nf.write('{}\n'.format(line))