Pandas中str.extract()结合正则表达式无法提取子串问题求助
解决Pandas str.extract()提取子串的问题
嘿,我来帮你搞定这个提取需求!你的正则没精准定位到目标内容的位置,所以才没拿到想要的结果。
问题分析
你要提取的是name=后面到下一个逗号之间的内容,但原正则r'(An+.+,$)'既没定位到name=这个关键前缀,匹配逻辑也没聚焦到目标区间,自然抓不到正确的子串。
正确方案
我们需要用正则精准锁定name=的位置,然后捕获它后面到逗号前的内容:
匹配正则:
r'name=\s*(.+?)\s*,'name=:精准定位目标内容的前缀\s*:匹配name=之后、内容之前的任意空格(兼容有无空格的情况)(.+?):非贪婪匹配捕获目标内容(避免过度匹配到后面的字符)\s*:匹配内容之后、逗号之前的任意空格,:匹配结束的逗号,确保只提取到目标区间
Pandas代码:
dataset['Sprint'] = dataset['URL'].str.extract(r'name=\s*(.+?)\s*,')
测试验证
用你提供的示例字符串测试一下:
import pandas as pd test_url = "[id=5548,rapidViewId=2968,state=ACTIVE,name= Anki Sprint 1.12 glu ,startDate=2020-03-09T09:21:24.412+01:00,endDate=2020-03-31T23:59:00.000+02:00,completeDate=,sequence=5548,goal=]" df = pd.DataFrame({'URL': [test_url]}) df['Sprint'] = df['URL'].str.extract(r'name=\s*(.+?)\s*,') print(df['Sprint'].iloc[0]) # 输出结果:Anki Sprint 1.12 glu
这样就能准确提取到你想要的内容啦!
内容的提问来源于stack exchange,提问作者soufiane
相关产品推荐
相关产品推荐

