影刀RPA进阶教程_Python正则表达式实战案例电商数据清洗的10个现成模板
影刀RPA进阶教程Python正则表达式实战案例——电商数据清洗的10个现成模板做电商自动化采集回来的原始数据基本都需要清洗。价格带着¥、销量后面跟着万件、手机号藏在一段文字里……正则表达式是处理这类问题最高效的工具。不需要精通正则只需要记住几个常用模式能改、能用就够了。一、先在影刀里用 Python 代码指令调用正则影刀有一个Python代码指令可以直接写 Python。把正则处理逻辑放在这个指令里importre# input_text 是从上一步传进来的字符串在影刀里配置输入变量原始文本input_text# 处理逻辑见下面各个模板result...# 处理结果赋给 result传回影刀二、10个现成正则模板模板1提取价格去掉货币符号和逗号原始文本¥1,234.56或1234.56元或USD 99.99importredefextract_price(text):提取价格数字返回 float# 匹配可能带逗号分隔的数字matchre.search(r[\d,]\.?\d*,str(text))ifmatch:price_strmatch.group().replace(,,)returnfloat(price_str)return0.0# 示例print(extract_price(¥1,234.56))# → 1234.56print(extract_price(99.9元))# → 99.9print(extract_price(USD 99.99))# → 99.99resultextract_price(input_text)拼多多店群自动化上架方案模板2提取销量处理万单位原始文本1.2万件或12345件或1.5万件defextract_sales(text):提取销量统一换算为整数textstr(text).strip()# 匹配带万的情况wan_matchre.search(r([\d.])\s*万,text)ifwan_match:returnint(float(wan_match.group(1))*10000)# 匹配纯数字num_matchre.search(r[\d,],text)ifnum_match:returnint(num_match.group().replace(,,))return0resultextract_sales(input_text)模板3提取手机号原始文本联系人张三电话138 1234 5678微信同号defextract_phone(text):提取中国大陆手机号patternr1[3-9]\d{9}phonesre.findall(pattern,re.sub(r\s,,str(text)))# 先去掉空格returnphones[0]ifphoneselseresultextract_phone(input_text)模板4提取电子邮箱defextract_email(text):patternr[a-zA-Z0-9._%-][a-zA-Z0-9.-]\.[a-zA-Z]{2,}emailsre.findall(pattern,str(text))returnemails[0]ifemailselseresultextract_email(input_text)模板5提取日期多种格式原始文本2026-06-10或2026/6/10或2026年6月10日defextract_date(text):提取日期返回 YYYY-MM-DD 格式patterns[(r(\d{4})[/-](\d{1,2})[/-](\d{1,2}),{}-{:02d}-{:02d}),(r(\d{4})年(\d{1,2})月(\d{1,2})日,{}-{:02d}-{:02d}),]forpattern,fmtinpatterns:mre.search(pattern,str(text))ifm:y,mo,dint(m.group(1)),int(m.group(2)),int(m.group(3))returnfmt.format(y,mo,d)returnresultextract_date(input_text)模板6提取括号内的内容原始文本商品编号SPU-20260610-001已上架defextract_bracket(text,bracket_type()):提取括号或其他符号中的内容ifbracket_type():patternr[(]([^)])[)]elifbracket_type[]:patternr[\[【]([^\]】])[\]】]else:patternr[]([^])[]matchesre.findall(pattern,str(text))returnmatches[0]ifmatcheselseresultextract_bracket(input_text)模板7提取链接URLdefextract_url(text):patternrhttps?://[^\s\]urlsre.findall(pattern,str(text))returnurls# 返回列表可能有多个resultextract_url(input_text)模板8清理多余空白字符原始文本连 衣 裙 夏季款defclean_whitespace(text):去掉首尾空格中间多个空格合并为一个textstr(text).strip()textre.sub(r\s, ,text)# 中间多空格→单空格textre.sub(r\n,\n,text)# 多个换行→单换行returntext resultclean_whitespace(input_text)模板9判断字符串是否为纯数字或特定格式defis_valid_price(text):判断是否为合法价格格式正数最多2位小数textstr(text).strip()returnbool(re.fullmatch(r\d(\.\d{1,2})?,text))defis_valid_phone(text):判断是否为合法手机号returnbool(re.fullmatch(r1[3-9]\d{9},str(text).strip()))resultis_valid_price(input_text)模板10批量替换敏感信息数据脱敏defdesensitize(text):手机号和邮箱脱敏# 手机号中间4位替换为****textre.sub(r(1[3-9]\d{2})\d{4}(\d{4}),r\1****\2,str(text))# 邮箱用户名只显示前2个字符textre.sub(r([a-zA-Z0-9._%-]{2})[a-zA-Z0-9._%-]([a-zA-Z0-9.-]),r\1***\2,[video(video-Xb5DGYLk-1781422373176)(type-csdn)(url-https://live.csdn.net/v/embed/524993)(image-https://v-blog.csdnimg.cn/asset/a547123d88ad712dccba346c9217e237/cover/Cover0.jpg)(title-TEMU店群如何管理运营)]text)returntext resultdesensitize(input_text)三、如何在影刀里使用这些模板标准用法拖入Python代码指令配置输入变量input_text→ 绑定到上一步获取到的文本变量把对应模板粘贴进代码块注意最后一行要是result ...配置输出变量把result绑定到一个影刀变量批量处理整列数据importre,pandasaspd# 假设 data_list 是从影刀传进来的列表变量# 批量处理整列价格result[extract_price(item)foritemindata_list]四、正则测试工具写好正则后先测试不要直接放进流程regex101.com在线测试可以看到每个捕获组匹配了什么还有语法解释浏览器控制台¥1,234.match(/[\d,]/)快速验证五、常见正则符号速查符号含义示例\d一个数字\d匹配多个数字\s空白字符空格/换行/Tab\s匹配多个空白\w字母/数字/下划线\w匹配单词.任意单个字符a.b匹配 axb1次或多次\d至少一个数字*0次或多次\d*零个或多个数字?0次或1次可选\d?零个或一个数字{n,m}n到m次\d{1,2}1-2个数字[abc]abc中的一个[0-9]等价于\d(...)分组/捕获(\d)元捕获数字^字符串开头^1[3-9]以1开头$字符串结尾\d$以数字结尾#影刀RPA #Python正则表达式 #数据清洗 #RPA进阶教程 #电商自动化作者林焱本文为影刀RPA系列文章之一内容源于实操经验整理与分享。