LINUX.ORG.RU

может. Типа такого:

result = re.search(blah-blah-blah)
print(result[0]) if result else exit("wrong year")

true_admin ★★★★★
()
Ответ на: комментарий от balodja

пока получается только вот так :(. 
как я понимаю, в питоне в условии if присвоение делать нельзя? (приходится выносить за условие регулярство, чтоб потом по второму разу не регулярить)

import re,sys
r = re.compile('^\'(?P<year>\d{4})\'$');
s = "'2008'"
yr = 2008

try:
    fnd=((int(r.match(s).group(1))));
    if not fnd<(yr+2):
        print 'wrongyear'
        sys.exit(0)
except AttributeError:
        print 'wrongyear'
        sys.exit(0)
print 'yrOK:'+str(fnd)

SteelRat
() автор топика
Ответ на: комментарий от SteelRat

Что делает - есть на входе отквоченная строка.
Нужно проверить, 4х численная ли она внутри и не космический ли у неё год. Проверенное число пользовать далее. Если число не катит или не число вовсе - останов программы.

Я потихоньку осваиваю питон и смотрю аналогии ;)

SteelRat
() автор топика

Да. Но не надо делать из питона перл.

Davidov ★★★★
()
Ответ на: комментарий от true_admin

>И Где проверка не вернёт ли re.match None?

Зачем? Написано "выйти" -- непойманное исключение это и сделает. А вывод пропущен, т.к. было написано "с ним работать", работа добавляется в конец по вкусу.

Конечно, кошернее было бы поймать Attribute- и Assertion-Error и выбросить далее что-то более внимаемое -- но в "задаче" этого не было.

DonkeyHot ★★★★★
()
Ответ на: комментарий от SteelRat

Такого быдло кода на питоне давно не видел.

Убейся, пожалуйста.

anonymous
()
Ответ на: комментарий от DonkeyHot

так в этом-то и фишка моего варианта, он ошибки отслеживает. Т.е. я сделал аналог того что в топике на перле сделано.

Кстати, а вот однострочником :)

import re, time; data="2008"; result = re.match("^\d{4}$", data); exit("wrong year") if not result or int(result.group())>time.localtime()[0] else print(result.group())

Тока однострочники на питоне не так впечатляют как перловые.

true_admin ★★★★★
()
Ответ на: комментарий от true_admin

> Тока однострочники на питоне не так впечатляют как перловые. t

Вот и славно... кстати, конструкции типа a = 1 if True else 0 настоящие мужчины не спользуют - рано еще %)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Если ты о вопросах совместимости то я уже год на py3k из транка :). Слава богу не приходится писать код который должен работать на 2.3, 2.4, 2.5 и 2.6 сразу :). Как вспомню что переменная из int может превратиться сама по себе в long так сразу плохо становится :).

true_admin ★★★★★
()
Ответ на: комментарий от SteelRat

А не проще ли:

s = '2008'
try:
    y = int(s)
except ValueError:
    print 'wrongyear'
    sys.exit(0)
if y > 2010: # добавить проверки по вкусу
    print 'wrongyear'
    sys.exit(0)
print yrOK:', y

mnt
()
Ответ на: комментарий от mnt

По условию задачи год - исходная строка, содержит внутри себя кавычки. (оно после $dbh->quote()).

SteelRat
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.