![](/img/trans.png)
[英]How to replace certain characters after other certain characters in a string, Python?
[英]How to remove characters after 2 certain characters in a Python string?
可以说我有一堆字符串,它们只能采用以下格式:
format1 = 'substring1#substring2'
format2 = 'substring1$substring2'
format3 = 'substring1'
让我解释。 有时有时使用#
或$
字符来分隔字符串。 但是其他时候却不是。
我想删除出现在#
或$
之后的部分。 如果它只是一个特殊字符,即#
,我可以这样做:
string = string.split('#')[0]
但是,如何快速而优雅地为2个特殊字符做呢? 还假设以下几点:
谢谢。
常用表达。
import re
re.sub('[$#].*', '', string_to_modify)
使用正则表达式!
import re
new_string = re.sub(r"(#|$).*$", "", string)
如果要避免使用正则表达式,则一种可能性是:
string = min(string.split('#')[0], string.split('$')[0])
使用re.split()。
import re
print(re.split("#|$","STRING#OTHER_STRING#OTHER_STRING_2"))
分割前使用替换 :
format1 = 'substring1#substring2'
format2 = 'substring1$substring2'
format3 = 'substring1'
print(format1.replace('#', '$').split('$')[0])
print(format2.replace('#', '$').split('$')[0])
print(format3.replace('#', '$').split('$')[0])
输出量
substring1
substring1
substring1
您可以使用for
循环来分隔任意数量的定界符。 正则表达式通常比Python str
方法效率低。
def converter(x, delims='#$'):
for delim in delims:
x = x.split(delim, maxsplit=1)[0]
return x
format1 = 'substring1#substring2'
format2 = 'substring1$substring2'
format3 = 'substring1'
for value in [format1, format2, format3]:
print(converter(value))
# substring1
# substring1
# substring1
我认为您可以使用一个列表来维护可以使用的特殊字符,并在查找到每个字符时检查字符串中是否存在特殊字符,当您执行拆分过程并仅检索左侧部分时,如下所示:
delimters = ["#","$"]
for symbol in delimters:
if symbol in string1:
left_part = string1.split(symbol)[0]
现在这种方法有一些缺点,但在我看来是最简单的。 问题是,如果您有多个字符串,则需要嵌套循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.