pandas用正则表达式非贪婪模式匹配
时间: 2023-11-14 19:13:18 浏览: 126
在pandas中,可以使用str.extract()或str.extractall()函数来进行正则表达式的匹配。非贪婪模式可以通过在正则表达式中添加“?”来实现。
例如,假设我们有以下数据:
```
import pandas as pd
data = pd.DataFrame({'text': ['abc123def456', 'abc789def012']})
```
我们想要从text列中提取数字,可以使用如下代码:
```
data['numbers'] = data['text'].str.extract(r'(\d+)')
```
这个正则表达式r'(\d+)'表示匹配一个或多个数字。默认情况下,正则表达式是贪婪模式的,即会尽可能多地匹配字符。因此,上述代码会得到以下结果:
```
text numbers
0 abc123def456 123456
1 abc789def012 789012
```
可以看到,匹配结果包含了所有的数字,而不是只提取出数字。为了使用非贪婪模式,可以在正则表达式中添加“?”符号,表示匹配尽可能少的字符。修改代码如下:
```
data['numbers'] = data['text'].str.extract(r'(\d+?)')
```
这样,正则表达式会尽可能少地匹配数字,得到以下结果:
```
text numbers
0 abc123def456 123
1 abc789def012 789
```
可以看到,提取结果只包含数字,而不是数字串。
阅读全文