这是一个非常基本的问题……对不起……我是个新手。一些规范:-The字符串是一个算术表达式。-It希望输出返回数字,即根据字符串返回2位数字或3位数字。例如,如果字符串是" 12 +3-5/6“,那么输出应该是12。我已经尝试过了:
import re
s = "12*9-6/4"
m = re.search("\d" , s)
if m:
print(s[m.start()])
else:
print("try again")
但这会输出它看到的第一个数字,而不是整个2位数字。我该如何更改它?
input = '123abc456def'
output = re.findall(r'^\d+', input)
但是这会返回方括号中的值。我只是得到了一个数字。
发布于 2018-05-31 19:17:28
尝试使用re.match
Ex:
import re
s = "12*9-6/4"
m = re.match("(?P<first>\d+)" , s)
if m:
print(m.group('first'))
else:
print("try again")
输出:
12
发布于 2018-05-31 19:19:23
没有regex
,您可以使用带有生成器理解和enumerate
的next
s = '12*9-6/4'
idx = next((i for i, j in enumerate(s) if not j.isdigit()), len(s))
res = int(s[:idx]) # 12
说明
对于s
.
s
>D15>计算为true,然后提取索引<
s[:idx]
将字符串切分到但不包括计算出的索引。< next
>H223https://stackoverflow.com/questions/50623028
复制相似问题