2026年04月14日/ 浏览 6
正文:
在数据分析中,我们常遇到非结构化文本需要提取关键信息的场景。比如从客服日志提取订单号,或从网页源码抓取特定标签内容。传统字符串方法处理这类需求往往力不从心,而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过滤有效行