Найдите непревзойденную строку в другой строке в python

Предположим, у меня есть две строки в python:

    str1 = 'WeDrank$varCupCoffeeToday'
    str2 = 'WeDrank2CupCoffeeToday'

Мы можем ясно видеть, что разница между ними $var и 2. Как мы можем получить 2 в качестве вывода, предполагая, что $var может быть в любой позиции, т.е.

    str1 = 'WeDrank2CupCoffee$var'
    str2 = 'WeDrank2CupCoffeeToday'

Итак, здесь вывод должен быть сегодня. Предвосхищение лучшего предложения. Заранее спасибо.


person Bishwash    schedule 28.02.2014    source источник
comment
$var будет присутствовать в любом случае?   -  person jrjc    schedule 28.02.2014
comment
Всегда ли это будет строка "$var"?   -  person 2rs2ts    schedule 28.02.2014
comment
yes $var — это символ, представляющий часть строки внутри другой строки. Например, в первом наборе $var представляет 2, а во втором — сегодня.   -  person Bishwash    schedule 28.02.2014
comment
да, это всегда будет $var каждый раз   -  person Bishwash    schedule 28.02.2014


Ответы (1)


Разделите токен '$var', затем замените две части слева и справа соответственно пустой строкой, и вы получите значение токена.

>>> str1 = 'WeDrank$varCupCoffeeToday'
>>> str2 = 'WeDrank2CupCoffeeToday'
>>> parts = str1.split('$var')
>>> str2.replace(parts[0],'').replace(parts[1],'')
'2'
>>> str1 = 'WeDrank2CupCoffee$var'
>>> str2 = 'WeDrank2CupCoffeeToday'
>>> parts = str1.split('$var')
>>> str2.replace(parts[0],'').replace(parts[1],'')
'Today'
person 2rs2ts    schedule 28.02.2014
comment
к сожалению, это не будет для URL-адресов - person Bishwash; 01.03.2014
comment
Наконец, я нашел хорошее решение, которое будет работать для простых строк, а URL-адрес заменяет lstrip функцией замены как: str2.replace(parts[0],'').replace(parts[1],'') - person Bishwash; 01.03.2014
comment
что, если у нас есть ситуация str1 = 'WeDrank$var1CupCoffeeTodayWith$var2Persons' и str2 = 'WeDrank2CupCoffeeTodayWith6Persons'? Я имею в виду динамическую ситуацию, когда может быть любое количество $var ? - person Bishwash; 01.03.2014
comment
@user2789099 user2789099 Вы не упомянули об этом в своем исходном вопросе ... кроме того, я не понимаю, как это не сработает для URL-адреса. - person 2rs2ts; 01.03.2014
comment
Да, я не упомянул, хотя и спрашиваю. Да, я пробовал с URL-адресом, это не сработало. - person Bishwash; 01.03.2014
comment
@user2789099 user2789099, можете ли вы опубликовать введенные вами данные, которые не сработали? Может быть, я могу это объяснить. - person 2rs2ts; 01.03.2014
comment
str1 = '127.0.0.1:8000/setLanguage/$var' и str2 = ' 127.0.0.1:8000/setLanguage/en' — это два входа, для которых кажется работать, а не работать.. - person Bishwash; 01.03.2014
comment
@user2789099 user2789099 Вау, спасибо, что указали на это! Оказывается, я ошибался относительно что делают lstrip и rstrip. - person 2rs2ts; 01.03.2014
comment
пожалуйста.. Вы нашли причину, по которой это не сработало? - person Bishwash; 01.03.2014
comment
@user2789099 user2789099 Прочтите ссылку, которую я указал в своем комментарии. Что касается использования нескольких переменных, вы можете использовать модуль re, чтобы помочь с этим, но я предлагаю вам открыть для этого новый вопрос. - person 2rs2ts; 02.03.2014