Как отлавливать синтаксические ошибки Python? - PullRequest
0 голосов
/ 11 октября 2010
try:
    pattern=r'<tr><td><a href='(?P<link>[\s\S]*?)'[\s\S]*?><img src='(?P<img>[\s\S]*?)'     width='130' height='130'[\s\S]*?/></a></td>'
except:
    try:
        pattern=r"<tr><td><a href='(?P<link>[\s\S]*?)'[\s\S]*?><img src='(?P<img>[\s\S]*?)' width='130' height='130'[\s\S]*?/></a></td>"
    except:
        pattern=r"""<tr><td><a href='(?P<link>[\s\S]*?)'[\s\S]*?><img src='(?P<img>[\s\S]*?)' width='130' height='130'[\s\S]*?/></a></td>"""

Я пишу регулярные выражения с помощью инструмента, а затем генерирую код Python.В некоторых ситуациях мне нужно использовать 'или "или" "", чтобы обернуть регулярное выражение.Я хочу попробовать / кроме ошибки.Если ошибка фиксируется, то я могу попробовать другой.Но это не сработало.Любая помощь?

Ответы [ 2 ]

0 голосов
/ 11 октября 2010

Оператор try / except в Python используется для ошибок, возникающих во время работы вашей программы. С другой стороны, вы сталкиваетесь с ошибками, которые происходят во время компиляции. В этом случае try / except вам не поможет.

Похоже, вам лучше всего использовать """ для окружения ваших регулярных выражений, которые содержат различные виды кавычек. В Python единственное, что вы не можете поместить в строку с тройными кавычками, это тройная кавычка.

0 голосов
/ 11 октября 2010

Вы должны избежать ваших цитат внутри RE.В первой строке все одинарные кавычки должны быть экранированы как \'.

Не используйте блок try для исправления вашего неисправного RE.Просто сделай это правильно с первого раза.

...