Я ищу чистое решение в Python3, чтобы вырезать подстроку из строки (например, встроенный комментарий). Однако, если это нечетное число разделителей, то остальная часть текста должна быть удалена (как примечание в конце строки программирования)
вход:
s="abcd;efghij;kl;mn"
выход:
s="abcdkl"
Как это можно сделать так же, как.replaceAll в Java
Если у вас есть только два разделителя, вы можете использовать str.split()
следующим образом:
In [15]: sp = s.split(';')
In [18]: result = sp[0] + sp[-1]
In [19]: result
Out[19]: 'abcdklmn'
В противном случае на основе вашей строки и ожидаемого результата вы можете использовать регулярные выражения для поиска нужных подстрок.
Демо-версия:
In [25]: s
Out[25]: 'abcd;efghij;klmn'
In [26]: re.sub(r'(;[^;]*)?;', '', s)
Out[26]: 'abcdklmn'
In [27]: s="abcd;klmn"
In [28]: re.sub(r'(;[^;]*)?;', '', s)
Out[28]: 'abcdklmn'
@Marcel, так как вы удовлетворены вышеуказанным подходом, предложенным @Kasramvd, это хорошо, и я хочу предложить вам написать простую крошечную функцию, используя ключевое слово lambda
.
Вызовите его несколько раз с новыми параметрами и получите результат, как показано ниже.
Посетите и проверьте https://www.python-course.eu/lambda.php для подробных примеров.
См. Функцию лямбды Python для кратких знаний.
>>> get_string = lambda s: s.split(';')[0] + s.split(';')[-1]
>>>
>>> get_string("abcd;efghij;klmn")
'abcdklmn'
>>>
>>> get_string("ABCD;MONKEY;XYZ")
'ABCDXYZ'
>>>
>>> get_string("PYTHON;abcd;LEARN")
'PYTHONLEARN'
>>>
Вы можете сделать это с помощью регулярного выражения:
import re
delimiters = ';'
s = 'fsdfsd;sfdsfd;ffs'
reg_exp = "[" + delimiters + "].*[" + delimiters + "]"
new_s = re.sub(reg_exp, "", s)
print (new_s)