gpt4 book ai didi

python - Pandas 与 R 中相同的正则表达式但结果不同

转载 作者:行者123 更新时间:2023-12-01 08:05:22 25 4
gpt4 key购买 nike

考虑这个旨在提取标题的简单正则表达式

(\w[\w-]+){2,}

在 Python (Pandas) 和 R (stringr) 中运行它会得到完全不同的结果!

stringr中,提取工作正常:查看如何正确解析'this-is-a-very-nice-test'

library(stringr)
> str_extract_all('stackoverflow.stack.com/read/this-is-a-very-nice-test',
+ regex('(\\w[-\\w]+){2,}'))
[[1]]
[1] "stackoverflow" "stack" "read" "this-is-a-very-nice-test"

在 Pandas 中,输出有点令人费解

myseries = pd.Series({'text' : 'stackoverflow.stack.com/read/this-is-a-very-nice-test'})

myseries.str.extractall(r'(\w[-\w]+){2,}')
Out[51]:
0
match
text 0 ow
1 ck
2 ad
3 st

这里出了什么问题?

谢谢!

最佳答案

(\w[-\w]+){2,} 正则表达式表示 repeated capturing group :

The repeated capturing group will capture only the last iteration

请参阅regex demo ,突出显示的子字符串是您在 Pandas 中使用 .extractall 获得的值因为此方法需要“带有捕获组的正则表达式模式”并返回“一个 DataFrame,每个匹配项对应一行,每个组对应一列 em>”。

与 Pandas extractall 相反,R stringr::str_extract_all忽略其结果中的所有捕获的子字符串,并且仅“提取所有匹配项并返回字符向量列表”。

关于python - Pandas 与 R 中相同的正则表达式但结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55563193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com