You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从input()输入中提取数字?自然语句数字识别的方法与可行性

当然可行!从自然语言输入中提取数字的实现方案

先给你吃个定心丸:你的需求完全具备可行性,在Python里用正则表达式就能轻松搞定这类数字提取问题,下面我给你拆解具体的实现思路和代码示例:

核心实现思路

我们主要依赖Python内置的re模块(正则表达式工具),它能精准从混合文字的输入里匹配出数字内容,不需要额外安装第三方库。

1. 基础数字匹配(通用场景)

如果只是想提取输入里所有的连续数字,不管它在什么位置,用\d+这个正则规则就够了——\d代表单个数字,+表示匹配1个或多个连续数字。

代码示例:

import re

user_input = input("Enter Age: ")
# 找出所有匹配的数字,返回一个列表
matched_numbers = re.findall(r'\d+', user_input)

if matched_numbers:
    # 假设用户只输入了一个年龄,取第一个匹配结果转成整数
    age = int(matched_numbers[0])
    print(f"提取到的年龄是:{age}")
else:
    print("没找到数字哦,请重新输入!")

比如用户输入“我28岁了”,这段代码会提取出28;输入“今年30岁啦”,也能拿到30。

2. 精准匹配(避免误识别)

如果担心输入里有其他无关数字(比如“我家在123号,我26岁”),可以把正则规则写得更精准,只匹配“岁”字前面的数字,用r'(\d+)岁'就能实现。

代码示例:

import re

user_input = input("Enter Age: ")
# 只匹配“岁”前面的数字
match = re.search(r'(\d+)岁', user_input)

if match:
    # 取出括号里捕获的数字内容
    age = int(match.group(1))
    print(f"提取到的年龄是:{age}")
else:
    print("没识别到有效的年龄格式,请输入类似‘我XX岁了’的内容哦!")

这种写法就不会把“123号”里的123当成年龄了,适配性更强。

扩展说明

  • 如果需要支持带小数的数字(比如小朋友的年龄“我1.5岁了”),可以把正则规则改成r'\d+\.?\d*',这样能匹配整数和小数。
  • 如果输入里有多个年龄(比如“我30岁,我妹妹25岁”),findall会返回所有匹配的数字列表,你可以循环处理这些结果。

内容的提问来源于stack exchange,提问作者Capt.Pyrite

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:32:42