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中两个特定字符之间包含的所有字符

使用 bash 删除字符串中特定出现后的所有文本

Python 正则表达式。删除 ':' 之后的所有字符(包括行尾和特定字符串除外)

从 Python3.3 中的字符串中删除除字母和空格之外的所有内容

SQL Server替换,删除特定字符后的所有内容

在 Python 中删除字符串中的多余字符