python - 熊猫从右向左拉出部分弦后第二次。否则先。如果 2 不存在
问题描述
在从右到左的第二个时期之后,我正在努力拉出任何东西。有些没有两个时期,所以它只是最后一部分。其他人有多个时期。有没有聪明的正则表达式方法来完成这个?
df
file_name
0 image001.png
1 image002.jpg
2 image003.jpg
3 1234_001.pdf
4 machine datasheet.pdf
5 asdf_101010101.xlsx
6 not_malicious.docx.pdf
7 example.txt.scf
8 place 1010 - wiki edits.pdf
9 I LOVE YOU.TXT.vbs
10 test.test.read_this.pdf
期望的输出:
df
file_name
0 png
1 jpg
2 jpg
3 pdf
4 pdf
5 xlsx
6 docx.pdf
7 txt.scf
8 pdf
9 TXT.vbs
10 read_this.pdf
解决方案
如果列表大小超过 2,则需要拆分然后从列表中返回最后两个,否则返回最后一个元素file_name
。.
df['file_name'].str.split('.').apply(lambda x: '.'.join(x[-2:]) if len(x)>2 else x[-1])
输出:
0 png
1 jpg
2 jpg
3 pdf
4 pdf
5 xlsx
6 docx.pdf
7 txt.scf
8 pdf
9 TXT.vbs
10 read_this.pdf
推荐阅读
- typescript - 打字稿:使用名称关键字声明函数
- algorithm - 树相关问题的时间复杂度
- mysql - Django 错误“此数据库后端不支持交叉点”
- python - 在 for 循环期间修改可迭代的大小 - 如何确定循环?
- sql - SQL Server:尝试在 SELECT 语句中使用 SUM 时出错
- ios - 归档构建时通用 URL 不起作用
- compiler-errors - 在 C++ 中声明两个 512x512 二维数组时出现分段错误
- multithreading - Python多处理队列是空的,尽管它被填充在不同的线程中
- json - Laravel - 当 API 路由未找到或匹配时会发生什么?
- angularjs - 如何在AngularJS中编辑数组中的对象