2016-07-18 83 views
0

我遇到了問題。我有一個包含大量字符串的文本文件。 我想只搜索那些有我的子字符串的人。但它給了我所有可能的匹配。 我的代碼是:打印此行只有一行python

name = 'ok' 
with open('C:/Users/Desktop/text.txt','r') as fin: 
     for line in fin: 
      if name in line: 
       print line 

它打印:

ok1.0 = 259 
ok1.1 = 259 
ok1.2 = 259 
ok2.0 = 260 
ok2.1 = 260 
ok2.2 = 260 
ok3.0 = 261 
ok3.1 = 261 
ok3.2 = 261 

這是好的 - 它找到所需要的所有線路。但最後我不需要3行數字相同的數字。我怎樣才能得到行尾有唯一數字的行?我能做些什麼來獲得像這樣的輸出?

ok1.0 = 259 
ok2.0 = 260 
ok3.0 = 261 

我不能搜索的正則表達式,例如確定[0-9] 0.0 < - 這是不允許的。我不得不在上面的末尾找到唯一具有唯一編號的行。 謝謝

+0

你是什麼意思不允許?你確定該文件不包含重複的行嗎? – e4c5

+0

你有所有的數字結尾的字符串? – Kaushal28

+0

@ e4c5不允許,因爲我不能這樣做。我知道這是最簡單的方法,但在我的情況下,我必須弄清楚如何在每一行的末尾獲得唯一的數字。此文件不包含重複 – nela

回答

1

你應該以某種方式使用看到的值(數字)set()過濾掉未來的實例。鑑於您的文件排序,每一道線條都是在tag = value格式:

name = 'ok' 
seen = set() 
with open('C:/Users/Desktop/text.txt','r') as fin: 
    for line in fin: 
     # Split stripped line to a tag and a value 
     tag, value = line.strip().split(' = ', 1) 
     if name in tag and value not in seen: 
      seen.add(value) 
      print line 

將只打印第一個匹配的線。

+0

完美!這就是我想要的謝謝你:) – nela