在python中获取字符串中的第一个数字

时间:2012-07-18 15:29:51

标签: python string match

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

  • 声明//跳过
  • foo bar //显示为选项
  • 标签//跳过
  • 1 foo
  • 2 foo
  • 3 bar
  • 4 foo bar
  • ...
  • 23546477 bar 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>之类的行而不是我想要的输出。

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

查看documentation - re.match会返回一个匹配对象,这就是您所看到的内容。 re.findall将为您提供与给定行中的模式匹配的字符串列表。

要获得第一个,你想要使用匹配对象,但是你需要re.search not re.match,然后你需要调用m.group()来获取匹配的字符串匹配对象。