这是一个非常基本的问题..抱歉......我是新手。 一些规格: - 字符串是算术表达式。 - 它会喜欢输出返回数字,即2位数或3位数 数字取决于字符串。 例如,如果字符串是" 12 + 3-5 / 6" 那么输出应该是12。 我试过这个:
PasswordAuthentication yes
但是这会输出它看到的第一个数字而不是整个2位数字。我该如何更改?
import re
s = "12*9-6/4"
m = re.search("\d" , s)
if m:
print(s[m.start()])
else:
print("try again")
但是这会返回方括号中的值。我得到一个号码。
答案 0 :(得分:3)
如果没有regex
,您可以next
使用生成器理解和enumerate
:
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
,产生(0, '1')
,(1, '2')
,(2, '*')
等。next
,我们发现j.isdigit
中的字符的第一个实例s
的计算结果为true。i
;如果不存在这样的字符,我们使用字符串的长度。s[:idx]
将字符串分割为但不包括计算的索引。答案 1 :(得分:0)
尝试使用 re.match
<强>实施例强>
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