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])
结果:

python 正则表达式用法示例_第1张图片

你可能感兴趣的:(python,正则表达式)