Форум сайта python.su
0
Подскажите, что я делаю не так. Сам я только перехожу на python из php.
pos = int(template)
if pos == 1:
template = re.sub(r“\bmonth\b”, “месяц”, template)
elif (pos >= 2 and pos <= 4) :
template = re.sub(r“\bmonth\b”, “месяца”, template)
elif (pos >= 5 and pos <= 12):
template = re.sub(r“\bmonth\b”, “месяцев”, template)
print(“<b>test here</b>”)
Если переменная pos в диапазоне от 1 до 9, что работает нормально. Как только подставляю 10, 11, 12, срабатывает 1-й блок. Как я понимаю, увидел в десятке первую цифру и сразу считает, что pos == 1.
Офлайн
22
Если переменная pos в диапазоне от 1 до 9, что работает нормально. Как только подставляю 10, 11, 12, срабатывает 1-й блок. Как я понимаю, увидел в десятке первую цифру и сразу считает, что pos == 1.Если всё на самом дела так, то нужно бы выяснить, а откуда строка в этом самом template появляется (в твоём коде этого не видно). Скорее всего, проблема ещё там появляется.
Офлайн
0
StriverДвумя строкамы выше. Эта переменная просто ссылается на текст, введённый тут же. Я отслеживал и её, и pos. Всё в полном порядке. Тип - str.
Офлайн
22
Я отслеживал и её, и pos. Всё в полном порядке. Тип - str.Что значит “отслеживал”?
Офлайн
0
Точно. Ты был прав. Вот тут я накосорезил.
template = template.format(“Вася”, “Пупкин”, “10”, “золоте”)
Отсюда она и берётся… Уже не 10, а 1…
Офлайн
294
nGregдавайте ка полный код, потому как есть подозрение что в template у вас падают данные толи посимвольно, толи оно просто берет первый символ из всей строки.
Как только подставляю 10, 11, 12, срабатывает 1-й блок. Как я понимаю, увидел в десятке первую цифру и сразу считает, что pos == 1.
[code python][/code]
Офлайн
0
Всё уже, разобрался
Со срезом индексов списка накосячил. Взял индекс только один, вместо двух. Вот он только первый элемент и отфильтровывал. Уже заработало. Пока к синтаксису питона привыкаю. После php различия нехилые. “.format” вообще для меня новинка. Третий день только осваиваю. Спасибо за подсказку!!!
Отредактировано nGreg (Окт. 4, 2019 15:37:32)
Офлайн