让我说说我有一堆字符串,它们只能采用以下格式:
format1 = 'substring1#substring2'
format2 = 'substring1$substring2'
format3 = 'substring1'
让我解释一下。字符串有时使用#
或$
字符进行分隔。但是其他时候却不是。
我想删除#
或$
(如果存在)之后出现的部分。如果它只是一个特殊字符,即#
,我可以这样做:
string = string.split('#')[0]
但是如何快速,优雅地为2个特殊字符设置呢?还要假设以下内容:
谢谢。
答案 0 :(得分:2)
正则表达式。
import re
re.sub('[$#].*', '', string_to_modify)
答案 1 :(得分:2)
使用正则表达式!
import re
new_string = re.sub(r"(#|$).*$", "", string)
答案 2 :(得分:2)
如果您想避免使用正则表达式,则可能是:
string = min(string.split('#')[0], string.split('$')[0])
答案 3 :(得分:1)
使用re.split()。
import re
print(re.split("#|$","STRING#OTHER_STRING#OTHER_STRING_2"))
答案 4 :(得分:0)
在拆分之前使用replace:
{{ myvar }}
输出
format1 = 'substring1#substring2'
format2 = 'substring1$substring2'
format3 = 'substring1'
print(format1.replace('#', '$').split('$')[0])
print(format2.replace('#', '$').split('$')[0])
print(format3.replace('#', '$').split('$')[0])
答案 5 :(得分:0)
您可以使用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
答案 6 :(得分:0)
我认为您可以使用列表来维护可以使用的特殊字符,并且对于每个字符,请检查字符串中是否存在特殊字符,当您发现执行拆分过程并仅检索左侧部分时,如下所示: / p>
delimters = ["#","$"]
for symbol in delimters:
if symbol in string1:
left_part = string1.split(symbol)[0]
现在这种方法有一些缺点,但在我看来是最简单的。问题是,如果您有多个字符串,则需要嵌套循环。