我有兩個列表,我使用下面的函數來分配(類似於在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)
這retuns列出,如: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']
- 顯然不是我所需要的。有任何想法嗎?
謝謝你。從你的想法我回來的東西看起來像'1:1:0 2'這是顯示主文件中的所有行,但沒有顯示任何差異?所以'1:'從主列表和'1:'從比較列表,然後實際數字 – KennyC
我已經在每個階段添加了評論和輸出,這是否有幫助。哦,並且我修正了fmt()函數中的一個錯誤,它會使格式變得糟糕。 – spiralx