在Python中从无空格字符串中提取数字

2024-06-07 06:45:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要从一个无空格的字符串中提取一个数字,该字符串的数字在brakets中,例如:

"auxiliary[0]"

我唯一能想到的是:

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

这看起来很笨拙,有人知道更好的方法吗?(数字始终以“[]”为单位)


Tags: 方法字符串returndefextract单位数字num
3条回答
print a[-2]

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

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

可以使用正则表达式(使用内置的^{} module):

import re

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

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

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

结果:

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

我会用正则表达式来得到数字。参见文档:http://docs.python.org/2/library/re.html

比如:

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

相关问题 更多 >