Следуя философии питон «Легче попросить прощения Than разрешения» (EAFP), я предлагаю вам создать подпрограмму, которая легко понять, а затем сохранить, если ваш смена разделителя.
SEPARATOR = u"!"
def process_string(s):
try:
return s[:s.index(SEPARATOR)]
except ValueError:
return s
Эта функция вернет строку с начала до, и не включает, независимо от того, что вы определили как разделитель. Если разделитель не найден, он вернет всю строку. Функция работает независимо от новых строк.Если ваш разделитель изменится, просто измените SEPARATOR
, и вы хорошо пойдете.
ValueError
исключение возникает, когда вы запрашиваете индекс символа не в строке (попробуйте его в командной строке:. "Hola".index("1")
(поднимет ValueError: substring not found
) Затем рабочий процесс предполагает, что большую часть времени вы ожидаете SEPARATOR
характер для того, чтобы быть в строке, поэтому сначала вы делаете попытку, не спрашивая разрешения (если в строке находится SEPARATOR
), если вы терпите неудачу (метод index
вызывает ValueError
), тогда вы просите прощения (верните строку как первоначально полученную). (EAFP) считается питоническим, когда он применяется, как и в этом случае.
Нет необходимости в регулярных выражениях, это простая проблема.
'[^.]' Соответствует любому символу, кроме '.'; Я не думаю, что это вы имели в виду. –
Извините, да ... это тоже должно быть! – Relic