在 Python 中删除字符之前或之后的所有内容

目录

Remove everything after a character in a string in Python

  1. 删除 Python 中字符串中某个字符后的所有内容
  2. 删除最后一次出现的字符后的所有内容
  3. 在 Python 中删除字符串中字符之前的所有内容
  4. 删除字符最后一次出现之前的所有内容

在 Python 中删除字符串中某个字符之后的所有内容

要删除字符串中某个字符后的所有内容:

  1. 使用str.split()方法在分隔符上拆分字符串。
  2. 访问索引处的列表元素0以获取分隔符之前的所有内容。
  3. 或者,使用加法 (+) 运算符添加分隔符。
主程序
my_str = 'bobby!hadz!com' separator = '!' result = my_str.split(separator, 1)[0] print(result) # 👉️ 'bobby'

我们使用该str.split()方法删除字符后的所有内容(!在示例中)。

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

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

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

如果在字符串中找不到分隔符,则返回仅包含 1 个元素的列表。

我们将maxsplit参数设置为1因为我们只需要拆分字符串一次。

该示例删除字符串中该字符第一次出现后的所有内容。

主程序
my_str = 'bobby!hadz!com' separator = '!' result_1 = my_str.split(separator, 1)[0] print(result_1) # 👉️ 'bobby' # 👇️ ['bobby', 'hadz!com'] print(my_str.split(separator, 1))

删除字符后的所有内容,保留分隔符

请注意,分隔符不包含在字符串中。如果需要包含它,请使用加法 (+) 运算符

主程序
my_str = 'bobby!hadz!com' # ✅ remove everything after a character, keeping the separator separator = '!' result = my_str.split(separator, 1)[0] + separator print(result) # 👉️ bobby!

加法 (+) 运算符可用于在 Python 中连接字符串。

删除最后一个字符出现后的所有内容

如果您需要删除字符串中最后一次出现该字符之后的所有内容,请使用该str.rsplit()方法。

主程序
my_str = 'bobby!hadz!com' separator = '!' # ✅ remove everything after the LAST occurrence of character result = my_str.rsplit(separator, 1)[0] print(result) # 👉️ 'bobby!hadz'

除了从右边分裂,rsplit()表现得像split().

str.rsplit()方法从右边拆分字符串,maxsplit设置为 时1,它只拆分一次。

删除最后一次出现后的所有内容,保留分隔符

如果您需要包括您拆分的字符,请使用
加法运算符 (+)

主程序
my_str = 'bobby!hadz!com' separator = '!' result = my_str.rsplit(separator, 1)[0] + separator print(result) # 👉️ 'bobby!hadz!'

使用 str.partition() 删除字符后的所有内容

您还可以使用该str.partition()方法删除字符串中特定字符后的所有内容。

主程序
my_str = 'bobby!hadz!com' separator = '!' result = my_str.partition(separator)[0] print(result) # 👉️ 'bobby' result = ''.join(my_str.partition(separator)[0:2]) print(result) # 👉️ 'bobby!'

str.partition
方法在第一次出现提供的分隔符

拆分字符串。

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

主程序
my_str = 'bobby!hadz!com' separator = '!' # 👇️ ('bobby', '!', 'hadz!com') print(my_str.partition(separator))
如果在字符串中找不到分隔符,则该方法返回一个包含该字符串的元组,后跟 2 个空字符串。

如果您需要在结果中包含分隔符,请使用该str.join()方法连接第一个和第二个列表项。

主程序
my_str = 'bobby!hadz!com' separator = '!' result = ''.join(my_str.partition(separator)[0:2]) print(result) # 👉️ 'bobby!'

str.join方法将一个可迭代对象作为参数并返回一个字符串,该字符串是可迭代对象中字符串的串联

调用该方法的字符串用作元素之间的分隔符。

在 Python 中删除字符串中某个字符之前的所有内容

要删除字符串中某个字符之前的所有内容:

  1. 使用str.find()方法获取字符的索引。
  2. 使用字符串切片并将start索引设置为字符的索引。
  3. 新字符串将不包含前面的字符。
主程序
my_str = 'apple, banana' result = my_str[my_str.find('b'):] print(result) # 👉️ banana

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

我们使用字符串切片来获取原始字符串的一部分,该部分从字符的索引开始,一直持续到字符串的末尾。

请注意,如果在字符串中找不到子字符串,则str.find()方法会返回。-1

处理角色不存在的场景

您可以处理方法在语句中
find()返回的场景-1if/else

主程序
my_str = 'apple, banana' index = my_str.find('b') print(index) # 👉️ 7 if index != -1: result = my_str[index:] else: result = my_str # 👉️ alternatively raise an error print(result) # 👉️ 'banana'

这是提供的字符不在字符串中的情况的示例。

主程序
my_str = 'apple, banana' index = my_str.find('z') print(index) # 👉️ -1 if index != -1: result = my_str[index:] else: result = my_str # 👉️ alternatively raise an error print(result) # 👉️ 'apple, banana'

我们的else语句将result变量分配给整个字符串,但是,您也可以引发异常。

主程序
my_str = 'apple, banana' index = my_str.find('z') print(index) # 👉️ -1 if index != -1: result = my_str[index:] else: # 👇️ this runs raise IndexError('provided character not in string')

删除最后一次出现的字符之前的所有内容

如果您需要删除最后一次出现的字符之前的所有内容,请使用该str.rfind()方法。

主程序
my_str = 'apple,banana,bear' result = my_str[my_str.rfind('b'):] print(result) # 👉️ 'bear'

str.rfind
方法返回字符串中找到提供的子字符串的最高索引

-1如果子字符串不包含在字符串中,则该方法返回。

您可以使用语句处理字符不存在于字符串中的情况if/else

主程序
my_str = 'apple,banana,bear' index = my_str.rfind('b') if index != -1: result = my_str[index:] else: result = my_str print(result) # 👉️ 'bear'

如果else块运行,我们将result变量设置为整个字符串。

或者,您可以在块中引发错误else,例如
raise IndexError('your message here')

使用 rsplit() 删除字符最后一次出现之前的所有内容

这是一个三步过程:

  1. 使用str.rsplit()方法从右边拆分字符串。
  2. 访问 index 处的列表项1
  3. 结果将是一个字符串,其中包含最后一次出现该字符之后的所有内容。
主程序
my_str = 'example.com/articles/python' result = my_str.rsplit('/', 1)[1] print(result) # 👉️ 'python' # 👇️ if you want to include the character in the result result_2 = '/' + my_str.rsplit('/', 1)[1] print(result_2) # 👉️ '/python' # 👇️ ['example.com/articles', 'python'] print(my_str.rsplit('/', 1))

我们使用该str.rsplit()方法删除最后一次出现字符之前的所有内容。

str.rsplit
方法使用提供的分隔符作为分隔符字符串返回字符串中的单词列表

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

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

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

除了从右边分裂,rsplit()表现得像split().

1请注意,我们为参数提供了一个值,因为我们只想从右侧拆分字符串一次。 maxsplit
主程序
my_str = 'example.com/articles/python' result = my_str.rsplit('/', 1)[1] print(result) # 👉️ 'python' # 👇️ ['example.com/articles', 'python'] print(my_str.rsplit('/', 1))

最后一步是访问索引处的列表元素,1以获取包含指定字符最后一次出现之后的所有内容的字符串。

如果要在结果中包含该字符,请使用加法 (+) 运算符。

主程序
my_str = 'example.com/articles/python' result = '/' + my_str.rsplit('/', 1)[1] print(result) # 👉️ '/python'

# 使用 rpartition() 删除字符最后一次出现之前的所有内容

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

主程序
my_str = 'example.com/articles/python' result = my_str.rpartition('/')[2] print(result) # 👉️ 'python' # 👇️ ('example.com/articles', '/', 'python') print(my_str.rpartition('/'))

str.rpartition
方法在提供的分隔符

最后一次出现处拆分字符串。

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

If the separator is not found in the string, the method returns a tuple containing two empty strings, followed by the string itself.

If you need to include the separator in the result, use the str.join() method
to join the second and third list items.

main.py
my_str = 'example.com/articles/python' result = ''.join(my_str.rpartition('/')[1:]) print(result) # 👉️ '/python'

The str.join method takes an
iterable as an argument and returns a string which is the concatenation of the
strings in the iterable.

The string the method is called on is used as the separator between the
elements.

# Additional Resources

You can learn more about the related topics by checking out the following
tutorials: