2017-05-19 4 views
1

私が直面している問題は、以下の例のようにデジタル値が割り当てられた単語 "数字"を持つワードdocがあることです。異なる値のみを格納する - Python 2.7 - re.search

words number=1111 words bee words 
words number=1111 words bee words 
words number=2222 words bee words 
number=2222 number=2222 words bee words 
words number=3333 words bee words 
words words words bee number=3333 
words number=4444 words bee words 
words bee words number=4444 words 
words bee words number=4444 words 

私は以下のスクリプトを実行する場合は、これを出力します。

1111 
1111 
2222 
2222 
3333 
3333 
4444 
4444 
4444 

しかし、それが何をしたいが一度だけ数値印刷され、その「数ならば、次の「数」に移動"は同じ値を保持し、次の値に移動し、その異なる値がある場合にのみ値を出力します。

Idealyこれは、スクリプトが戻って提供する必要があります出力されます。

1111 
2222 
3333 
4444 

それはあなたがすでに見た値を追跡することができ、同じ値

openfile = open("openfile.txt", "r") 
openfile = openfile.readlines() 

bee = "bee" 

def testscript():  
    for line in openfile: 
     match = re.search('number=(\d+)', line) 
     if match and bee in line: 
      storedvalue = match.group(1) 
      print storedvalue 

testscript() 

答えて

1

を持っている数字をスキップするために、私は希望しますこれらのシャネルと一緒に:

def testscript():  
    already_seen = set() 
    for line in openfile: 
     match = re.search('number=(\d+)', line) 
     if match and bee in line: 
      storedvalue = match.group(1) 
      if storedvalue not in already_seen: 
       already_seen.add(storedvalue) 
       print storedvalue 
+0

あなたは_bee_を引用符で囲む必要があります – volcano

+0

@ volcano理事会はOPとして国際的に使用する代わりに「蜂」を引用すべきだということに同意しました。私はそれを引用する必要はないと主張します。私はできる限り多くの文脈を維持しようとするために、OPコードにこれらの変更を加えることを避けました。 –

+0

スティーブンありがとう。これはトリックでした! – user6534872

関連する問題