У Python Regex “объект нет атрибута”

Довольно легко записать j.u.l LogManager класс, который задержит весь вход к сделанной на заказ реализации, которая использует Log4J. Это означает, что можно использовать log4j, но все еще иметь хорошую функцию, что библиотеками, которые регистрируют использование j.u.l, можно управлять, как будто они использовали Log4J.

использовавший и (и вход свободного городского населения), я должен сказать, что вещь, которая действительно, действительно , действительно раздражает меня, является этим:

log4j.error("An Exception", e);

jul.severe("An Exception", e); // GRRR! no such method

jul.log(Level.SEVERE, "An Exception", e); //Must use this method

, Почему они делали это проектное решение? Почему? Другая вещь состоит в том, что нет никакого PatternFormatter, который поставлется с j.u.l - Вы имеете к самокрутке.

Тем не менее я допускаю ошибку для использования j.u.l с этого времени, поскольку это сокращает внешние зависимости и не больше сложно для использования.

8
задан ives 7 July 2015 в 07:20
поделиться

3 ответа

Ваше исключение означает, что urla имеет значение None. Поскольку значение urla определяется вызовом re.search, из этого следует, что re.search возвращает None. И это происходит, когда строка не соответствует шаблону.

Так что в основном вы должны использовать:

urla = re.search(pattern2, match)
if urla is not None:
    print filename, urla.group(1)

вместо того, что у вас есть сейчас.

18
ответ дан 5 December 2019 в 07:12
поделиться

Причина TypeError в том, что search или match обычно возвращают либо MatchObject или Нет . Только один из них имеет групповой метод . И это не Нет . Итак, вам нужно сделать:

url = re.search(pattern2, match)
if url is not None:
    print(filename, url.group(0))

PS PEP-8 предлагает использовать 4 пробела для отступа. Это не просто мнение, это хорошая практика. Ваш код довольно сложно читать.

3
ответ дан 5 December 2019 в 07:12
поделиться

Please also note your mistaken assumption that the error was in the third match, when it was in fact in the second. This seems to have led to the mistaken assumption that the second match was doing something to invalidate the third, sending you way off track.

0
ответ дан 5 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: