2016-09-23 52 views
0

我想拆分2個列表,比較它們並在2個列表中沒有成功比較項目的情況下創建一個新列表。如何拆分python中的文件

因此,可以說 List_1.txt =

Failed = abc 
Failed = hfi 
Failed = kdi 

和List_2.txt =

1:1:1 - jdsfjdf 
2:2:2 - iidf 
3:3:3 - abc 
6:3:1 - hfi 
8:2:1 - kdi 
3:1:5 - dua 
3:1:2 - dfh 

我想比較這些名單,並作出new_list2沒有LIST_1條目。

我的嘗試是:

treinrit = open('List_1', 'r') 
lijna = treinrit.readlines() 
treinrit.close() 

annuleer_treinrit = open('List_2', 'r') 
lijnb = annuleer_treinrit.readline() 
annuleer_treinrit.close() 

lijsta = [] 
lijstb = [] 

for a in lijna: 
    clean = a.split(' - ') 
    print(lijsta) 

for b in lijnb: 
    lijstb.append(lijnb.split(": ")) 

我只是無法獲取列表正常分裂。我只需要每個文件的最後一位進行比較,但我不知道如何。

+0

有你這麼選中該頁面出來:http://stackoverflow.com/questions/546508/how-can-i-split- a-file-in-python 希望它有幫助 – 2016-09-23 13:33:32

+0

你能顯示想要的最終結果嗎? – Hoopdady

+0

@HopDady list_2沒有abc,hfi和kdi。 –

回答

1
with open('File1', 'r') as f1: 
    f1_stored = [] 
    for line in f1: 
     f1_stored.append(line.split('=')[1].strip()) 
    with open('File2', 'r') as f2; 
     output = [] 
     for line in f2: 
      if not any(failed in line for failed in f1_stored): 
       output.append(line) 

你想output

1

像這樣的事情

bad_stuff = [] 
with open('List_1', 'r') as fn: 
    for line in fn: 
     bad_stuff.append(line.split('=')[1].strip()) 


with open('List_2', 'r') as fn: 
    for line in fn: 
     if line.split(':')[1].strip() not in bad_stuff: 
      print(line) 

名單bad_stuff將所有的=符號之後,從第一個文件元素(如abchfi和什麼做kdi

然後檢查第二個文件,只打印如果:符號之後的部分不在列表bad_stuff

+0

謝謝,這幫了我很多。 [1] .strip究竟做了什麼? –

+1

'strip()'去掉前導和尾隨空格和換行符。有像rstrip()這樣的命令可以刪除右邊的空格和換行符(Theres也是lstrip(),正如你猜測的那樣)。 –

+0

啊tahnks很多!而[1]?它是否增加了空間或什麼? –