2016-07-18 8 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行を必要としません。行の最後に一意の番号の行だけを取得するにはどうすればよいですか?このような出力を得るために私は何ができますか?私はOKのような正規表現を検索することはできません

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

関連する問題