首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何找到字符串的第一个数字

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

Stack Overflow用户
提问于 2018-05-31 19:14:40
回答 2查看 94关注 0票数 1

这是一个非常基本的问题……对不起……我是个新手。一些规范:-The字符串是一个算术表达式。-It希望输出返回数字,即根据字符串返回2位数字或3位数字。例如,如果字符串是" 12 +3-5/6“,那么输出应该是12。我已经尝试过了:

代码语言:javascript
运行
复制
import re
s = "12*9-6/4"
m = re.search("\d" , s)
if m:
    print(s[m.start()])
else:
    print("try again")

但这会输出它看到的第一个数字,而不是整个2位数字。我该如何更改它?

代码语言:javascript
运行
复制
input = '123abc456def'
output = re.findall(r'^\d+', input)

但是这会返回方括号中的值。我只是得到了一个数字。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-31 19:17:28

尝试使用re.match

Ex:

代码语言:javascript
运行
复制
import re
s = "12*9-6/4"
m = re.match("(?P<first>\d+)" , s)
if m:
    print(m.group('first'))
else:
    print("try again")

输出:

代码语言:javascript
运行
复制
12
票数 0
EN

Stack Overflow用户

发布于 2018-05-31 19:19:23

没有regex,您可以使用带有生成器理解和enumeratenext

代码语言:javascript
运行
复制
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.

  • We中的字符,我们找到第一个实例< s >D15>计算为true,然后提取索引<

  • >D19s>;如果不存在这样的字符,我们将使用s[:idx]将字符串切分到但不包括计算出的索引。< next >H223
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50623028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档