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

在Python中从无空格字符串中提取数字,python,Python,我需要从一个无空格的字符串中提取一个数字,该字符串的数字在brakets中,例如: "auxiliary[0]" 我能想到的唯一办法是: def extract_num(s): s1=s.split["["] s2=s1[1].split["]"] return int(s2[0]) 这看起来很笨拙,有人知道更好的方法吗?(数字始终在“[]”括号中)您可以使用正则表达式(内置): 模式匹配一个文本[字符,后跟一个或多个数字(\d转义表示数字字符组,+表示一个或多个)

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

"auxiliary[0]"
我能想到的唯一办法是:

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

这看起来很笨拙,有人知道更好的方法吗?(数字始终在“[]”括号中)

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

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

结果:

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

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

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

结果:

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

我将使用正则表达式来获取数字。见文件:

比如:

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

我将使用正则表达式来获取数字。见文件:

比如:

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





您的搜索将返回“[0]”,而不是“0”;这是故意的吗?啊,说得好。很高兴我写了“类似这样的东西”:。我来调整一下。谢谢。您的搜索将返回“[0]”,而不是“0”;这是故意的吗?啊,说得好。很高兴我写了“类似这样的东西”:。我来调整一下。谢谢。我考虑过了,但我不确定使用它是否需要我安装一个可能不在其他计算机上的库。是这种情况还是Python版本中的“re”来构建?@GuyKovel:它是Python附带的标准库;我把你和文件联系起来了。Python自带电池!:-)@到目前为止这对你有用吗?我有什么需要补充的吗?我想了想,但我不确定使用它是否需要我安装一个可能不在其他计算机上的库。是这种情况还是Python版本中的“re”来构建?@GuyKovel:它是Python附带的标准库;我把你和文件联系起来了。Python自带电池!:-)@到目前为止这对你有用吗?我需要在解释中添加什么吗?
foobar[42]
将使用这些失败。
foobar[42]
将使用这些失败。
print a[a.index(']') - 1]
print a[a.index('[') + 1]
for number in re.findall(r'\[(\d+)\]',"auxiliary[0]"):
    do_sth(number)