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

如何从字符串中识别提取对应数据类型 支持数值/日期/货币场景

字符串自动类型识别实现方案

无依赖自定义实现

如果不想引入第三方包,可以按「窄范围到宽范围」的优先级手写判断逻辑,灵活扩展匹配规则,示例代码如下:

from datetime import datetime
import re

def auto_parse_string(input_str: str):
    # 1. 匹配整数
    if input_str.isdigit():
        return int(input_str), int
    # 2. 匹配浮点数
    try:
        float_val = float(input_str)
        return float_val, float
    except ValueError:
        pass
    # 3. 匹配常见日期格式,可自行添加需要的格式
    supported_date_formats = ["%Y-%m-%d", "%Y/%m/%d", "%m-%d-%Y", "%b %d, %Y"]
    for fmt in supported_date_formats:
        try:
            return datetime.strptime(input_str, fmt), datetime
        except ValueError:
            pass
    # 4. 匹配货币格式,支持¥/$前缀、千分位逗号、两位小数标准格式
    currency_regex = r'^[$¥]?\s?\d{1,3}(,\d{3})*(\.\d{2})?$'
    if re.fullmatch(currency_regex, input_str):
        cleaned_num = re.sub(r'[$¥,\s]', '', input_str)
        return float(cleaned_num), "currency"
    # 所有规则都不匹配,返回原字符串
    return input_str, str

该方案的优势是规则完全可控,你可以根据自己的业务场景增删匹配规则,缺点是复杂场景下需要维护的规则量较大。

第三方库成熟方案

如果需要更高的识别准确率、不想自己维护规则,可以用以下成熟工具:

  • 日期识别直接用python-dateutil的parser模块:不需要手动指定日期格式,能自动识别绝大多数常见的日期写法,准确率远高于手写规则。
  • 批量数据处理直接用pandas的类型转换工具:pd.to_numeric()、pd.to_datetime()搭配错误忽略参数,可批量完成整列数据的类型自动识别,货币格式可以先用pd.Series.str.replace()清理符号和千分位后再转换。
  • 专门的类型推断库可以用typeguess:可以自动识别字符串的数值、日期、布尔、货币等多种类型,开箱即用不需要写规则。

测试效果参考

输入字符串识别结果对应类型
"1"1int
"2.0"2.0float
"John has 3 apples""John has 3 apples"str
"2024-05-20"datetime(2024,5,20,0,0)datetime
"$1,234.56"1234.56currency

内容的提问来源于stack exchange,提问作者prismo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:24:03