如何用正则表达式从Pandas中提取符合规则的路径子串
Pandas 正则提取实现方案
直接使用如下代码即可满足需求:
import pandas as pd s = pd.Series(['xslF345X03/was-form4_163347386959085.xml', 'xslF345X03/wf-form4_163347386959085.xmlasdf', 'xslF345/X03/wf-form4_163347386959085.xml']) result = s.str.extract(r'.*(\/.*\.xml)$')
正则表达式说明
r'.*(\/.*\.xml)$' 各部分逻辑完全匹配你的提取规则:
.*采用贪婪匹配规则,会吞掉字符串前面尽可能多的字符,最终停在最后一个符合后续规则的/前()是捕获组,str.extract会默认返回捕获组内匹配到的内容,也就是你要的提取结果:\/匹配斜杠字符.*匹配斜杠后到.xml前的任意字符\.xml严格匹配.xml后缀
$锚定字符串末尾,只有整个字符串以.xml结尾时才会触发匹配,不符合的返回NaN,对应你要求的「不提取」规则
输出结果验证
运行代码后得到的结果和你预期完全一致:
| 原字符串 | 提取结果 |
|---|---|
| xslF345X03/was-form4_163347386959085.xml | /was-form4_163347386959085.xml |
| xslF345X03/wf-form4_163347386959085.xmlasdf | NaN |
| xslF345/X03/wf-form4_163347386959085.xml | /wf-form4_163347386959085.xml |
内容的提问来源于stack exchange,提问作者gunardilin
相关产品推荐
相关产品推荐

