我需要从一个没有空格的字符串中提取一个数字,这个数字在括号中,例如:
"auxiliary[0]"
我能想到的唯一方法是:
def extract_num(s):
s1=s.split["["]
s2=s1[1].split["]"]
return int(s2[0])
这看起来很笨拙,有人知道更好的方法吗? (数字总是在“[]”小括号中)
请您参考如下方法:
您可以使用正则表达式(使用内置的 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
