text='POLO1.4自动舒适 标准价121000元 现价111600元 降幅9400元 预计再降400元 桑塔纳3000手动标准型 标准价118000元 现价107000元 降幅11000元 预计再降1000元 爱丽舍自动天窗型 标准价122800元 现价109600元 降幅13200元 预计再降400元 凯越1.6手动舒适 标准价117800元 现价107600元 降幅10200元 预计再降400元’
编程实现,提取出text文本中所有的价格。
此题目采用python正则表达式快速解决。
import re
text='''POLO1.4自动舒适 标准价121000元 现价111600元 降幅9400元
预计再降400元 桑塔纳3000手动标准型 标准价118000元 现价107000元
降幅11000元 预计再降1000元 爱丽舍自动天窗型 标准价122800元
现价109600元 降幅13200元 预计再降400元 凯越1.6手动舒适
标准价117800元 现价107600元 降幅10200元 预计再降400元'''
p=re.compile('\d+元')
list1=p.findall(text)
print(list1)
运行结果
[‘121000元’, ‘111600元’, ‘9400元’, ‘400元’, ‘118000元’, ‘107000元’, ‘11000元’, ‘1000元’, ‘122800元’, ‘109600元’, ‘13200元’, ‘400元’, ‘117800元’, ‘107600元’, ‘10200元’, ‘400元’]
编译正则表达式创建对象
正则表达式(RegularExpression)通常被简称为REs或regexes。是一些由字符和特殊符号组成的规则字符串。因此能按某种模式匹配一个有相似特征的字符串的集合,也能按某模式匹配一系列有相似特征的字符串。
Python自带一个正则表达式模块(re模块),通过这个模块可以查找、提取、替换一段有规律的信息。
使用正则表达式基本步骤:
寻找规律——用正则符号表示规律——依据规律提取信息
对象=re.compile(pattern[, flag])
pattern:正则表达式,flag:匹配模式
findall:遍历匹配,可以获取字符串中所有匹配的字符串,返回一个列表。即能够以列表的形式返回所有满足要求的字符串。findall的函数使用方法:
re.findall(pattern, string[,flags=0])
该匹配是从左到右有序地返回。如果无匹配,返回空列表。
使用正则表达式时,常常用到一些特定的字符类,字符集合,数字集合等等,可以使用预定义字符集的缩写形式。
正则表达式预定义字符类匹配
使用正则表达式时,常常用到一些特定的字符类,字符集合,数字集合等等,可以使用预定义字符集的缩写形式。
\d 匹配任何十进制数,它相当于类 [0-9]
\D 匹配任何非数字字符,它相当于类[^0-9]
\s 匹配任何空白字符,它相当于类[\t\n\r\f\v]
\S匹配任何非空白字符,它相当于类[^\t\n\r\f\v]
\w匹配任何字母数字字符,它相当于类[a-zA-Z0-9_]
\W匹配任何非字母数字字符,它相当于类[^a-zA-Z0-9_]
正则表达式重复限定匹配
pattern*: 允许pattern模式重复0次或多次。
pattern?: 允许pattern模式重复0次或1次。
pattern+: 允许pattern模式重复1次或多次。
pattern{m,n}: 允许pattern模式重复m~n次。
pattern{m,}: 允许pattern模式至少重复m次。
pattern{m}: 允许pattern模式重复m次。