0

这是我使用 python 的第一天,我被困住了。我有一个文件,其内容如下所示:

  • 声明//跳过
  • foo bar //显示为选项
  • 标签//跳过
  • 1个
  • 2 富
  • 3 巴
  • 4 富吧
  • ...
  • 23546477 bar bar bar 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将为您提供与给定行中的模式匹配的字符串列表。

To get just the first, you do want to use Match objects, but you want re.search not re.match and then you need to call m.group() to get the matched string out of the Match object.

于 2012-07-18T15:40:12.853 回答