python - 使用 python 正则表达式提取项目编号
问题描述
今天是个好日子。我想从project_name
列中提取斜杠符号后的最后一位数字。目前,我正在研究它,但有一些问题如下:
- 如何提取斜杠符号后的最后一位数字而不得到带有方括号的结果?因为现在我的代码几乎可以工作,但结果总是有一个方括号
我的代码:
def project_name(name):
return re.findall(r'\d{3}$',name)
data['project_name'] = data['project_name'].apply(project_name)
数据:
project_name
----------
ASAHI,PT-PRO/PTN/06-2012/192
CIMB NIAGA-PRO/PTN/06-2012/174
FRAMAS INDONESIA-PRO/PTN/06-2012/210
DM STOCK 2015
PERBAIKAN OH TM 366 PLANT DAWUAN
Ruko-PRO/PTN/03-2012/47
我的输出:
(Expected)project_name
----------
192
174
210
NaN
NaN
NaN
47
感谢所有建议和意见。感谢大家
解决方案
使用Series.str.extract
并添加/
到正则表达式:
data['project_name'] = data['project_name'].str.extract(r'/(\d{3}$)')
print (data)
project_name
0 192
1 174
2 210
3 NaN
4 NaN
5 NaN
6 NaN
解决方案findall
:
data['project_name'] = data['project_name'].str.findall(r'/(\d{3}$)').str[0]
如果不匹配,您的解决方案应该更改为next
并iter
返回默认值:np.nan
def project_name(name):
return next(iter(re.findall(r'/(\d{3})$',name)), np.nan)
data['project_name'] = data['project_name'].apply(project_name)
print (data)
project_name
0 192
1 174
2 210
3 NaN
4 NaN
5 NaN
6 NaN
推荐阅读
- threadx - ThreadX 系统定时器线程需要多少堆栈?
- python - 如何将具有混合值的字符串表示列表转换为列表?
- android - 使用 Kotlin 的 Fragment 中的 Retrofit2 参数
- tensorflow - GAN - 生成器损失减少,但鉴别器假损失在初始下降后增加,为什么?
- c++ - winrt::Windows::Media::Playback::MediaPlayer 在调用 CopyFrameToVideoSurface 时导致崩溃
- postgresql - 将 Keycloak 与 Postgresql 连接起来
- php - 使用 MAMP 服务器时,在 laravel 上继续出现 php artisan migrate 错误?
- java - 即使在触发新请求java之后字符串仍处于先前状态
- sql - 在插入表之前删除数据
- node.js - 在 cmd 中启动电报机器人时节点停止