python - Pandas:尝试提取两种不同的模式
问题描述
要从我正在使用的字符串中提取特定数字:
df['URL'].str.extract(r'dir=sale.aspx\%3fvpid%\w{2}(\d+)\%*',expand=False)
字符串示例:
'a'|'b'|'c'|'d|'0CCC63BF60D2&dir=sale.aspx%3fvpid%3d49398%26utm_source%xyz'|'e'
在这里我要提取:49398
对于这种字符串,我必须在相同的代码中提取第二个模式:
'a'|'b'|'c'|'d'|'6A5528CD54F4&dir=sale.aspx&vpid=66395&utm_source=abc'|'a'
在这里我要提取:66395
我需要使用尝试两种不同模式的东西。
我正在使用 python 2,7
解决方案
你可以试试这个模式:
pattern = r'dir=sale.aspx(?:\%3fvpid%\w{2}|\&vpid=)(\d+)\%*'
# test data
df = pd.DataFrame({"URL":[
"'a'|'b'|'c'|'d|'0CCC63BF60D2&dir=sale.aspx%3fvpid%3d49398%26utm_source%xyz'|'e'",
"'a'|'b'|'c'|'d'|'6A5528CD54F4&dir=sale.aspx&vpid=66395&utm_source=abc'|'a'"
]})
# regex
df.URL.str.extract(pattern)
输出:
0
0 49398
1 66395
推荐阅读
- opengl - 片段着色器中条件分支的性能
- apache-nifi - 在 nifi groovy 脚本中,异常已被标记为传输
- java - 再次单击时,一个 jbutton 执行不同的操作
- java - 如何在 Java 中的 JSON 对象中访问此键?
- ruby-on-rails - Rails 5,sqlite3 使用数组作为列/属性问题
- c# - 从可枚举中获取第一项需要很长时间
- android - 如何将文件设置为 Android 10 的铃声?
- sql - 子查询中的分组未按预期工作
- sql - 在 vb.net 中更新数据库需要帮助
- android - gradle kotlin-dsl move android {} into subproject {} in root project build.gradle.kts