2017-09-24 63 views
1

我正在讀取一個文件,並且我想單獨讀取每一行,因爲輸出中的每一行都必須是前兩行的組合。這是一個小例子:Python:如何跳過輸入文件中的重複行?

Input: 

<www.example.com/apple> <Anything> 
<www.example.com/banana> <Anything> 

Output: 

<www.example.com/apple> <Anything> 
<www.example.com/banana> <Anything> 
<Apple> <Banana> 

如果任何行的重複,或者如果它是一個空行,然後我不想處理它,我想每次只有2個不同的線路。

這是我真正投入的一部分:

<http://catalog.data.gov/bread> <http://dbpedia.org> 
<http://catalog.data.gov/bread> <http://dbpedia.org> 
<http://catalog.data.gov/bread> <http://dbpedia.org> 
<http://catalog.data.gov/bread> <http://dbpedia.org> 

<http://catalog.data.gov/roll> <http://dbpedia.org> 
<http://catalog.data.gov/roll> <http://dbpedia.org> 

在這種情況下,我所要的輸出是這樣的:

<http://catalog.data.gov/bread> <http://dbpedia.org> 
<http://catalog.data.gov/roll> <http://dbpedia.org> 
<bread> <roll> 

這是我的代碼:

file = open('rdfs.txt') 
for id, line in enumerate(file): 
     if id % 2 == 0: 
      if line.isspace(): 
       continue 
      line1 = line.split() 
      sub_line1, rel_line1 = line1[0], line1[1] 
      sub_line1 = sub_line1.lstrip("<").rstrip(">") 
      print(sub_line1) 

     else: 
      if line.isspace(): 
       continue 
      line2 = line.split() 
      sub_line2, rel_line2 = line2[0], line2[1] 
      sub_line2 = sub_line2.lstrip("<").rstrip(">") 
      print(sub_line2) 

它的工作完美,但我得到的所有線,如何添加,如果第二行等於行之前,然後跳過所有噸他排隊,直到你找到一個新的不同的路線。

現在我得到的輸出:

http://catalog.data.gov/bread 
http://catalog.data.gov/bread 
http://catalog.data.gov/roll 
http://catalog.data.gov/roll 

謝謝!

回答

1

可以聲明一個set()並把它命名爲line_seen,將持有的所有可見的線條,如果它檢查每一個新的生產線在lines_seen與否,並把它添加到你的檢查:

你的代碼應該是這樣的:

file = open('rdfs.txt') 
lines_seen = set() # holds lines already seen 
for id, line in enumerate(file): 
    if line not in lines_seen: # not a duplicate 
     lines_seen.add(line) 
     if id % 2 == 0: 
      if line.isspace(): 
       continue 
      line1 = line.split() 
      sub_line1, rel_line1 = line1[0], line1[1] 
      sub_line1 = sub_line1.lstrip("<").rstrip(">") 
      print(sub_line1) 

     else: 
      if line.isspace(): 
       continue 
      line2 = line.split() 
      sub_line2, rel_line2 = line2[0], line2[1] 
      sub_line2 = sub_line2.lstrip("<").rstrip(">") 
      print(sub_line2) 
+0

這給了我一個好主意。非常感謝!!!! – codeDojo

+0

很高興爲您效勞。 –

相關問題