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

Python中解析C风格格式化字符串,提取对应整数的方法

提取格式字符串对应整数的可行方法

分享几个从给定C风格格式字符串和生成的目标字符串中提取整数的实用方案:

1. 正则表达式匹配(通用型)

把格式字符串里的整数占位符转换成正则捕获组,匹配目标字符串后提取数字转整数。比如针对%05u这种固定位数的格式,自动生成对应正则:

import re

fmt = "export_%05u.png"
target = "export_00111.png"

# 将%05u替换为匹配5位数字的捕获组
regex_pattern = re.sub(r'%(\d+)u', lambda m: rf'(\d{{{m.group(1)}}})', fmt)
match_result = re.fullmatch(regex_pattern, target)

if match_result:
    extracted_num = int(match_result.group(1))
    print(extracted_num)  # 输出 111

如果是不带位数的%u,直接把替换规则改成r'%u' -> r'(\d+)'即可,适配任意长度的整数。

2. 定位占位符截取(轻量型)

通过格式字符串的前后固定内容,直接在目标字符串中截取出数字部分:

fmt = "export_%05u.png"
target = "export_00111.png"

# 拆分格式字符串为前缀、占位符、后缀
placeholder_start = fmt.find('%')
prefix = fmt[:placeholder_start]
suffix = fmt[fmt.find('u')+1:]

# 从目标字符串中去掉前后固定内容,剩下的就是数字串
num_str = target[len(prefix):-len(suffix)]
extracted_num = int(num_str)
print(extracted_num)  # 输出 111

这种方法不用正则,适合格式简单、占位符唯一的场景。

3. 固定位置截取(快速型)

如果已经明确格式字符串的结构(比如知道数字在第7到12位),可以直接硬编码位置截取:

target = "export_00111.png"

# 直接截取数字部分
num_str = target[7:12]
extracted_num = int(num_str)
print(extracted_num)  # 输出 111

这种方法最快,但只适用于格式完全固定的场景,一旦格式变化就需要修改代码。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:55:16