python 正则表达式用法示例

要求:现有文本:“牧牌全脂牛奶1L*12盒【品牌】: 牧牌【规格】:1L*12盒(乳脂肪含量≥3.5%)【产地】:德国【类型】:超高温瞬时灭菌纯牛奶【原料】:100%牛奶【非脂乳固体含量】:≥8.5%【生产日期】:见包装【保质期】:12个月储藏条件 置于阴凉干燥处存放食用方法使用前摇匀。开启后,请储藏于1-4℃,并于3日内饮用完。” 要求从中提取出【】内的文字和对应的内容。

基本思想:1、先从提出【】中的内容放到一个list中,这个比较简单;2、再找出】和【之间的内容,这是对应的说明部分,放到另一个list中,可以找到8个中的前7个,因为最后一个结尾是。号,不符合此条件;3、专门再抽取最后一项说明,添加到第2个list中,这时 两个list中的元素个数相等,而且第n个元素之间的对应关系也保持;4、将两个list合并到一个dict中去。完成

代码:

#正则表达式的基本用法
text="牧牌全脂牛奶1L*12盒【品牌】:牧牌【规格】:1L*12盒(乳脂肪含量≥3.5%)【产地】:德国【类型】:超高温瞬时灭菌纯牛奶"
text=text+"【原料】:100%牛奶【非脂乳固体含量】:≥8.5%【生产日期】:见包装【保质期】:12个月储藏条件 置于阴凉干燥处存放食用方法使用前摇匀。开启后,请储藏于1-4℃,并于3日内饮用完。"
import re

pid=re.compile("【([\u4e00-\u9fa5]{1,10})】") # 匹配【】同的文字
mid=pid.findall(text) # 查到所有

pvalue=re.compile(":([^a-z【]{1,20})【") # 匹配:与【之间的文字,除了最后一项,因为它以。结尾
mvalue=pvalue.findall(text) # 查到所有

plastvalue=re.compile(":([^a-z。]{1,30})。") # 匹配最后一项
mlastvalue=plastvalue.findall(text) # 查到所有

mvalue.extend(mlastvalue)#结果合并

d={} #创建一个空字典
count=len(mid) #获取之前匹配结果的长度
for i in range(count): # 循环读取之前的匹配结果list元素,创建字典
    d[mid[i]]=mvalue[i] # 将抽取的内容逐条添加到字典中
for key in d:
    print(key,":",d[key])
结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值