获取Python中特定子串之后的字符串

获取 Python 中特定子串之后的字符串

Get the string after a specific substring in Python

要获取特定子字符串之后的字符串:

  1. 使用该str.split()方法在子字符串上拆分字符串一次。
  2. 访问 index 处的列表元素1
  3. 索引处的列表元素1包含特定子字符串之后的字符串。
主程序
my_str = 'one two two three' result = my_str.split('two ', 1)[1] print(result) # 👉️ two three

我们调用该str.split()方法时将count参数设置为1,因此字符串仅拆分一次。

主程序
my_str = 'one two two three' print(my_str.split('two ', 1)) # 👉️ ['one ', 'two three'] print(my_str.split('two ')) # 👉️ ['one ', '', 'three']

str.split ()
方法使用定界符将字符串拆分为子字符串列表。

该方法采用以下 2 个参数:

姓名 描述
分隔器 在每次出现分隔符时将字符串拆分为子字符串
最大分裂 最多maxsplit完成拆分(可选)

要获取子字符串之后的所有内容,我们只需访问 index 处的列表元素1

主程序
my_str = 'one two two three' result = my_str.split('two ', 1)[1] print(result) # 👉️ two three
如果需要处理字符串不包含子串的场景,使用三元运算符。
主程序
my_str = 'one two two three' substring = 'abc' result = (my_str.split(substring, 1)[1] if substring in my_str else my_str) print(result) # 👉️ one two two three

如果子字符串包含在字符串中,我们返回子字符串之后的部分。

否则,我们按原样返回字符串。

根据您的用例,如果子字符串不包含在字符串中,您可能还想返回一个空字符串。

主程序
my_str = 'one two two three' substring = 'abc' result = (my_str.split(substring, 1)[1] if substring in my_str else '') print(result) # 👉️ ""

或者,您可以使用字符串切片。

使用字符串切片获取特定子字符串之后的字符串

要获取特定子字符串之后的字符串:

  1. 使用str.index()方法获取子字符串的索引。
  2. 将子字符串的长度添加到索引中。
  3. 使用字符串切片返回指定子字符串之后的字符串。
主程序
my_str = 'one two two three' substring = 'two ' result = my_str[my_str.index(substring) + len(substring):] print(result) # 👉️ two three

str.index
方法返回字符串中提供的子字符串第一次出现的索引

我们将子字符串的长度添加到索引中,以在子字符串之后立即开始字符串切片。

字符串切片的语法是my_str[start:stop:step].

索引是包含的start,而stop索引是排他的(最多,但不包括)。

如果在字符串中找不到子字符串,则str.index()方法会引发 a 。ValueError

如果需要处理这种情况,可以使用三元运算符。

主程序
my_str = 'one two two three' substring = 'abc' result = (my_str[my_str.index(substring) + len(substring):] if substring in my_str else my_str) print(result) # 👉️ one two two three

如果在字符串中找到子字符串,我们返回子字符串之后的切片。

否则,我们按原样返回字符串。

或者,您可以使用该str.partition()方法。

使用 str.partition() 获取特定子字符串之后的字符串

要获取特定子字符串之后的字符串:

  1. 使用该str.partition()方法在第一次出现子字符串时拆分字符串。
  2. 访问 index 处的列表元素2
  3. 索引处的列表元素2包含特定子字符串之后的字符串。
主程序
my_str = 'one two two three' result = my_str.partition('two ')[2] print(result) # 👉️ two three

str.partition

方法在第一次出现提供的分隔符时拆分字符串

主程序
my_str = 'bobby!hadz!com' separator = '!' # 👇️ ('bobby', '!', 'hadz!com') print(my_str.partition(separator))

该方法返回一个包含 3 个元素的元组 – 分隔符之前的部分、分隔符和分隔符之后的部分。

如果在字符串中找不到分隔符,则该方法返回一个包含该字符串的元组,后跟 2 个空字符串。

如果需要处理字符串中不包含子串的场景,使用三元运算符。

主程序
my_str = 'one two two three' substring = 'abc' result = (my_str.partition(substring)[2] if substring in my_str else my_str) print(result) # 👉️ two three

如果子字符串包含在字符串中,我们返回调用该
str.partition()方法的结果,否则,我们按原样返回字符串。

您选择哪种方法是个人喜好的问题。我会继续使用该str.split()方法,因为我发现它非常直观且易于阅读。