如何从含range表达式的字符串提取数字生成合规数据切片格式
解决方案
方法1:正则匹配(推荐,适配性更强)
直接匹配第一个range()内的两个数字,自动忽略后续内容,适配任意位数的数字:
import re sample = 'range(0, 286)range(300, 511)' # 正则捕获第一个range括号内的起始、结束数字 res = re.search(r"range\((\d+),\s*(\d+)\)", sample) if res: start_num, end_num = res.groups() slice_format = f"[{start_num}:{end_num}]" print(slice_format)
运行输出为:[0:286]
方法2:纯字符串拆分(无需导入模块)
通过字符串切割提取目标部分,逻辑简单易读:
sample = 'range(0, 286)range(300, 511)' # 截取第一个右括号前的内容,去掉前缀range( first_range_content = sample.split(")")[0].lstrip("range(") # 拆分两个数字并去除多余空格 start_num, end_num = [item.strip() for item in first_range_content.split(",")] slice_format = f"[{start_num}:{end_num}]" print(slice_format)
两种方法都支持任意位数的数字输入,不需要处理第二组range()的内容。
内容的提问来源于stack exchange,提问作者Starbucks
相关产品推荐
相关产品推荐

