从Python中的未空格字符串中提取数字

时间:2013-02-06 16:32:44

标签: python

我需要从一个没有空格的字符串中提取一个数字,例如:

"auxiliary[0]"

我能想到的唯一方法是:

def extract_num(s):    
   s1=s.split["["]
   s2=s1[1].split["]"]
   return int(s2[0])

哪个看起来很笨拙,有没有人知道更好的方法呢? (数字总是在“[]”brakets中)

4 个答案:

答案 0 :(得分:4)

您可以使用正则表达式(内置re module):

import re

bracketed_number = re.compile(r'\[(\d+)\]')

def extract_num(s):
    return int(bracketed_number.search(s).group(1))

模式匹配文字[字符,后跟1位或更多位数(\d转义表示数字字符组,+表示1或更多),后跟文字]。通过在\d+部分周围加上括号,我们创建了一个捕获组,我们可以通过调用.group(1)来提取("获取第一个捕获组结果")。

结果:

>>> extract_num("auxiliary[0]")
0
>>> extract_num("foobar[42]")
42

答案 1 :(得分:2)

我会使用正则表达式来获取数字。请参阅文档:http://docs.python.org/2/library/re.html

类似的东西:

import re
def extract_num(s):
  m = re.search('\[(\d+)\]', s)
  return int(m.group(1))

答案 2 :(得分:1)

print a[-2]

print a[a.index(']') - 1]

print a[a.index('[') + 1]

答案 3 :(得分:0)

for number in re.findall(r'\[(\d+)\]',"auxiliary[0]"):
    do_sth(number)