我有两个列表,我使用以下函数来分配行号(类似于 unix 中的 nl):
def nl(inFile):
numberedLines = []
for line in fileinput.input(inFile):
numberedLines.append(str(fileinput.lineno()) + ': ' + line)
numberWidth = int(log10(fileinput.lineno())) + 1
for i, line in enumerate(numberedLines):
num, rest = line.split(':',1)
fnum = str(num).rjust(numberWidth)
numberedLines[i] = ':'.join([fnum, rest])
return ''.join(numberedLines)
这将返回列表,如:1: 12 14
2: 20 49
3: 21 28
。对于infile
我正在使用的,行号非常重要。我的第二个列表的结构相同,但行号没有任何意义。我需要从第二个文件中找到列表差异并从第一个文件中返回行号。例如:如果第二个文件有:5: 12 14
48: 20 49
我只想返回3
第一个列表中缺失值的行号。
这是我尝试过的:
oldtxt = 'master_list.txt' # Line numbers are significant
newFile = 'list2compare.txt' # Line numbers don't matter
s = set(nl(oldtxt))
diff = [x for x in (newFile) if x not in s]
print diff
返回:[12 14\n', '20 49\n', '21 28\n']
-- 显然不是我需要的。有任何想法吗?