悠悠楠杉
网站页面
正文:
在数据分析中,我们常遇到非结构化文本需要提取关键信息的场景。比如从客服日志提取订单号,或从网页源码抓取特定标签内容。传统字符串方法处理这类需求往往力不从心,而str.extract配合正则表达式却能优雅解决。
str.extract是pandas Series对象的方法,其核心优势在于:
1. 直接返回DataFrame结构
2. 支持多捕获组的分列提取
3. 自动处理缺失匹配
基础语法如下:
df['新列'] = df['文本列'].str.extract(r'正则表达式', flags=re.IGNORECASE)假设我们有包含商品信息的原始文本:"【爆款】iPhone15 128G ¥6999 | 库存:237件"
"华为Mate60 Pro+ ¥8999 (限时补贴)"
需要提取品牌、型号、价格三要素:
import pandas as pd
import re
data = pd.Series([
"【爆款】iPhone15 128G ¥6999 | 库存:237件",
"华为Mate60 Pro+ ¥8999 (限时补贴)"
])
pattern = r'(华为|iPhone)(\w+\s?\w+?)\s¥(\d+)'
result = data.str.extract(pattern)
result.columns = ['品牌','型号','价格']输出结果:品牌 型号 价格
0 iPhone 15 128G 6999
1 华为 Mate60 Pro+ 8999
.*?避免过度捕获(?<=¥)\d+匹配价格而不包含¥符号(苹果|安卓)\s?(?:手机|平板)匹配不同设备类型处理HTML文本时典型示例:
html = "<div class='price'>¥<span>599</span></div>"
price = pd.Series(html).str.extract(r'<span>(\d+)</span>')[0]re.UNICODE标志python
re.compile(r'pattern').match(test_str).groups()str.contains过滤有效行