如何找到字符串的第一个数字

时间:2018-05-31 11:14:40

标签: python python-3.x

这是一个非常基本的问题..抱歉......我是新手。 一些规格: - 字符串是算术表达式。 - 它会喜欢输出返回数字,即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")

但是这会返回方括号中的值。我得到一个号码。

2 个答案:

答案 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