0

これはPythonを使った最初の日で、行き詰まっています。次のような内容のファイルがあります。

  • 宣言//スキップ
  • foob​​ar//オプションとして表示
  • ラベル//スキップ
  • 1 foo
  • 2 foo
  • 3バー
  • 4fooバー
  • ..。
  • 23546477バーバーバーバーfoo

ユーザーがfooを選択した場合、1、2、4、および23546477を返し、ファイルに書き込みます。

  • ターゲット1
  • ターゲット2
  • ターゲット4
  • ターゲット23546477

これは私がこれまでに思いついたものです:

import sys
import re

def merge():

   if (len(sys.argv) > 1):
    labfile = sys.argv[1]
    f = open(labfile, 'r')
    f.readline()
    string = f.readline()
    print "Possible Target States:"
    print string
    var = raw_input("Choose Target States: ")
    print "you entered ", var
    f.readline()
    words = var.split()
    for line in f.readlines():
      for word in words:
        if word in line:
          m = re.match("\d+", line)
          print m
          //get the first number and store it in a list or an array or something else

    f.close()

merge() 

残念ながら、それは機能していません-私が<_sre.SRE_Match object at 0x7fce496c0100>望む出力の代わりにのような行が表示されます。

4

2 に答える 2

1

あなたがしたい(少なくとも):

if m:  #only execute this if a match was found
   print m.group()  #m.group() is the portion of the string that matches your regex.
于 2012-07-18T15:34:15.147 に答える
0

ドキュメントを見てください-re.matchあなたが見ているものであるMatchオブジェクトを返します。 re.findall特定の行のパターンに一致する文字列のリストが表示されます。

最初のものだけを取得するには、 Match オブジェクトを使用たいのですが、使用したくre.searchないre.match場合は、Match オブジェクトから一致した文字列を取得するために呼び出す必要がありm.group()ます。

于 2012-07-18T15:40:12.853 に答える