获取 Python 中特定子串之后的字符串
Get the string after a specific substring in Python
要获取特定子字符串之后的字符串:
- 使用该
str.split()
方法在子字符串上拆分字符串一次。 - 访问 index 处的列表元素
1
。 - 索引处的列表元素
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) # 👉️ ""
或者,您可以使用字符串切片。
使用字符串切片获取特定子字符串之后的字符串
要获取特定子字符串之后的字符串:
- 使用
str.index()
方法获取子字符串的索引。 - 将子字符串的长度添加到索引中。
- 使用字符串切片返回指定子字符串之后的字符串。
主程序
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() 获取特定子字符串之后的字符串
要获取特定子字符串之后的字符串:
- 使用该
str.partition()
方法在第一次出现子字符串时拆分字符串。 - 访问 index 处的列表元素
2
。 - 索引处的列表元素
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()
方法,因为我发现它非常直观且易于阅读。