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