如何删除Python字符串中2个特定字符之后的字符?

时间:2018-12-28 20:06:20

标签: python string

让我说说我有一堆字符串,它们只能采用以下格式:

format1 = 'substring1#substring2'
format2 = 'substring1$substring2'
format3 = 'substring1'

让我解释一下。字符串有时使用#$字符进行分隔。但是其他时候却不是。

我想删除#$(如果存在)之后出现的部分。如果它只是一个特殊字符,即#,我可以这样做:

string = string.split('#')[0]

但是如何快速,优雅地为2个特殊字符设置呢?还要假设以下内容:

  1. 字符串中只能出现一个特殊字符。
  2. 特殊字符将不会出现在字符串的任何其他部分。

谢谢。

7 个答案:

答案 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]

现在这种方法有一些缺点,但在我看来是最简单的。问题是,如果您有多个字符串,则需要嵌套循环。