抱歉,python还是新手.

基本上,我有一个很长的文件名列表,一些是格式名_XX123456,另一些是格式名_XX123456_123456.

我需要在每个元素中丢失从第二个下划线到第二个下划线的所有内容.

sample_list=['NAME_XX011024', 'NAME_XX011030_1234', 'NAME_XX011070', 'NAME_XX090119_15165']

shortlist=[]
item  = "_"
count = 0
i=0
for i in range(0,len(sample_list)):
        if(item in sample_list[i]):
               count =  count + 1
               if(count == 2):
                     shortlist.append(sample_list[i].rpartition("_"))
                     i+=1
                     
               if (count == 1):
                   shortlist.append(sample_list[i])
                   i+=1
                   
               
        print(shortlist)

推荐答案

下面是一个简单的拆分连接方法.我们可以在下划线上拆分每个输入,然后使用下划线作为分隔符将前两个元素连接在一起.

sample_list = ['NAME_XX011024', 'NAME_XX011030_1234', 'NAME_XX011070', 'NAME_XX090119_15165']
output = ['_'.join(x.split('_')[0:2]) for x in sample_list]
print(output)
# ['NAME_XX011024', 'NAME_XX011030', 'NAME_XX011070', 'NAME_XX090119']

您也可以在此处使用正则表达式:

sample_list = ['NAME_XX011024', 'NAME_XX011030_1234', 'NAME_XX011070', 'NAME_XX090119_15165']
output = [re.sub(r'([^_]+_[^_]+)_.*', r'\1', x) for x in sample_list]
print(output)
# ['NAME_XX011024', 'NAME_XX011030', 'NAME_XX011070', 'NAME_XX090119']

Python相关问答推荐

将数据框架与导入的Excel文件一起使用

如何让Flask 中的请求标签发挥作用

数据抓取失败:寻求帮助

Pandas—在数据透视表中占总数的百分比

如何使用Pandas DataFrame按日期和项目汇总计数作为列标题

Django RawSQL注释字段

在matplotlib中使用不同大小的标记顶部添加批注

pandas:在操作pandora之后将pandora列转换为int

从源代码显示不同的输出(机器学习)(Python)

你能把函数的返回类型用作其他地方的类型吗?'

以极轴表示的行数表达式?

类型对象';敌人';没有属性';损害';

替换包含Python DataFrame中的值的<;

当lambda函数作为参数传递时,pyo3执行

在不降低分辨率的情况下绘制一组数据点的最外轮廓

为什么在安装了64位Python的64位Windows 10上以32位运行?

根据两个lambda条件筛选组并根据条件创建新列的最佳方式是什么?

条件Python Polars cum_sum over a group,有更好的方法吗?

在极坐标中添加列总计行

基于符号和位置 Select 数据帧特定区域的毕达式方法