目录
Remove everything after a character in a string in Python
在 Python 中删除字符串中某个字符之后的所有内容
要删除字符串中某个字符后的所有内容:
- 使用
str.split()
方法在分隔符上拆分字符串。 - 访问索引处的列表元素
0
以获取分隔符之前的所有内容。 - 或者,使用加法 (+) 运算符添加分隔符。
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))
如果您需要在结果中包含分隔符,请使用该str.join()
方法连接第一个和第二个列表项。
my_str = 'bobby!hadz!com' separator = '!' result = ''.join(my_str.partition(separator)[0:2]) print(result) # 👉️ 'bobby!'
str.join方法将一个可迭代对象作为参数并返回一个字符串,该字符串是可迭代对象中字符串的串联。
调用该方法的字符串用作元素之间的分隔符。
在 Python 中删除字符串中某个字符之前的所有内容
要删除字符串中某个字符之前的所有内容:
- 使用
str.find()
方法获取字符的索引。 - 使用字符串切片并将
start
索引设置为字符的索引。 - 新字符串将不包含前面的字符。
my_str = 'apple, banana' result = my_str[my_str.find('b'):] print(result) # 👉️ banana
str.find方法返回字符串中提供的子字符串第一次出现的索引。
我们使用字符串切片来获取原始字符串的一部分,该部分从字符的索引开始,一直持续到字符串的末尾。
请注意,如果在字符串中找不到子字符串,则该str.find()
方法会返回。-1
处理角色不存在的场景
您可以处理方法在语句中
find()
返回的场景。-1
if/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() 删除字符最后一次出现之前的所有内容
这是一个三步过程:
- 使用
str.rsplit()
方法从右边拆分字符串。 - 访问 index 处的列表项
1
。 - 结果将是一个字符串,其中包含最后一次出现该字符之后的所有内容。
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 you need to include the separator in the result, use the str.join()
method
to join the second and third list items.
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:
- Remove all Non-Numeric characters from a String in Python
- Remove First and Last Characters from a String in Python
- Remove first occurrence of character from String in Python
- 在 Python 中从字符串中删除前 N 个字符
- 从 Python 中的字符串中删除最后 N 个字符
- 从 Python 中的列表或字符串中删除换行符
- 从 Python 字符串中删除非字母数字字符
- 从 Python 中的字符串中删除非 ASCII 字符
- 从 Python 中的字符串中删除非 utf-8 字符
- 从 Python 中的字符串中删除匹配正则表达式的字符
- 从 Python 中的字符串中删除除空格之外的特殊字符