Python字符串在特定字符出现3次后删除所有内容
Posted
技术标签:
【中文标题】Python字符串在特定字符出现3次后删除所有内容【英文标题】:Python String remove everything after specific character showed up 3 times 【发布时间】:2021-11-26 11:41:51 【问题描述】:我有以下问题。
我有一个完整的文件名列表,我想过滤掉其中的特定部分。问题是,我无法知道信息的确切位置,因为它可能会根据文件本身而改变。我只能确定下划线的相对位置。
一个例子会是什么样子:
'C:\\Path...\\SomeInfo_MoreInfo_123_456_789.PDF'
我需要做什么才能获得 123?我最初的想法是删除第三个_
和第四个_
之前的所有内容,但我不知道如何使用.split()
完成此操作
【问题讨论】:
pathlib.Path(your_string).name.split('_')[-2]
?
【参考方案1】:
要清楚 .split()
的工作原理,请查看其输出:
>>>a = 'C:\\Path...\\SomeInfo_MoreInfo_123_456_789.PDF'
>>>a.split('_')
['C:\\Path...\\SomeInfo', 'MoreInfo', '123', '456', '789.PDF']
现在,如果你想要的字符串部分总是在前两个'_'之后,你可以提取它:
>>>a.split('_')[2]
'123'
【讨论】:
【参考方案2】:string = 'C:\\Path...\\SomeInfo_MoreInfo_123_456_789.PDF'
new_list = string.split("_")
new_list
输出将是:
['C:\\Path...\\SomeInfo', 'MoreInfo', '123', '456', '789.PDF']
现在我们要获取123
的索引:
target = new_list.index("123")
输出将是:
2
现在我们得到了结果:
result = new_list[target]
输出将是:
123
注意:使用此方法,您可以获得任何字符串,只需将123
替换为您的单词
当然我们可以做new_list[2]
但是如果123
路径改变呢?!
【讨论】:
【参考方案3】:你可以使用:
parts = a.split('_') ; ['C:\\Path...\\SomeInfo', 'MoreInfo', '123', '456', '789.PDF']
最后:
result = parts[2] ; '123'
您必须知道 split 返回和数组,其中元素由您指定的值 (_) 分隔。
【讨论】:
以上是关于Python字符串在特定字符出现3次后删除所有内容的主要内容,如果未能解决你的问题,请参考以下文章
Python 正则表达式。删除 ':' 之后的所有字符(包括行尾和特定字符串除外)