Python中匹配特定文本模式并将结果赋值给多变量的紧凑实现方法
Python 紧凑实现指定文本格式解析
直接使用正则表达式捕获组即可实现,既可以完成格式校验,也可以一步提取所有需要的字段,无需手动拆分字符串处理边界情况。
基础实现(带格式校验)
import re # 定义匹配模式,使用命名捕获组方便字段读取 parse_pattern = re.compile(r'^(?P<n1>\d+)-(?P<n2>\d+) ([a-z]): (?P<s>.*)$') # 示例文本 input_str = "1-3 z: zztop" matched = parse_pattern.match(input_str) if matched: n1 = int(matched.group("n1")) n2 = int(matched.group("n2")) c = matched.group("c") s = matched.group("s")
注:如果使用Python3.8及以上版本,可以用海象运算符
if matched := parse_pattern.match(input_str):把匹配和判断合并成一行。
极简一行解包实现
如果已经确认输入格式合法,不需要异常处理,可以直接简化为一行赋值:
import re n1, n2, c, s = int(m[0]), int(m[1]), m[2], m[3] for m in [re.match(r'^(\d+)-(\d+) ([a-z]): (.*)$', "1-3 z: zztop").groups()]
扩展适配
如果文本中数字和字母、冒号之间可能存在多个空格/制表符,可以调整模式中的空格匹配为\s+,适配多空白符场景:
# 适配多空白符的模式 parse_pattern = re.compile(r'^(?P<n1>\d+)-(?P<n2>\d+)\s+(?P<c>[a-z]):\s+(?P<s>.*)$')
内容的提问来源于stack exchange,提问作者Elimination
相关产品推荐
相关产品推荐

