python 匹配_python-匹配一个单词,然后按任意顺序匹配两...

博客内容涉及编写一个解析器,用于处理小图书馆数据。数据格式包含人名、可选权重和年龄,用逗号、竖线和感叹号分隔。作者遇到的问题是正则表达式匹配结果不正确,期望输出是人名及其关联的权重和年龄,但实际结果中元素被错误地分组。提供的代码展示了尝试的正则模式,并显示了当前的匹配结果。
摘要由CSDN通过智能技术生成

我正在为一个小图书馆写一种解析器.

我的字符串采用以下格式:

text = "Louis,Edward,John|85.56!26,Billy,Don!18|78.0,Dean"

为了更清楚一点,这是人名列表,以逗号分隔,后跟两个可选的分隔符(|和!),第一个后面的权重是一个带有0-2小数位的数字,而“ !”有一个代表年龄的整数.分隔符和相关值可以按任何顺序出现,如John和Don所见.

我需要使用正则表达式(我知道我可以通过许多其他方式来提取)所有长度在2到4之间的名称,以及两个分隔符和以下值(如果存在).

这是我的预期结果:

[('John', '|85.56', '!26'), ('Don', '|78.00' ,'!18'), ('Dean', '', '')]

我正在尝试使用以下代码:

import re

text = "Louis,Edward,John|85.56!26,Billy,Don!18|78.0,Dean"

pattern = re.compile(r'(\b\w{2,4}\b)(\!\d+)?(\|\d+(?:\.\d{1,2})?)?')

search_result = pattern.findall(text)

print(search_result)

但这是实际结果:

[('John', '', '|85.56'), ('26', '', ''), ('Don', '!18', '|78.0'), ('Dean', '', '')]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值