Как отлавливать ошибки синтаксиса Python?

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 ответа

Решение

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

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

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

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

Другие вопросы по тегам