python
  • regex
  • error-handling
  • try-except
  • 2010-10-11 5 views -3 likes 
    -3
    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. Есть некоторые ситуации, когда мне нужно использовать «или» или «» для обертывания регулярного выражения. Я хочу попробовать/исключая ошибку. Если ошибка зафиксирована, я могу попробовать другую. Но это не сработало. Любая помощь?Как поймать ошибки синтаксиса python?

    +1

    . Вт ч а т? –

    +1

    Пожалуйста. Найдите учебник. Сделайте все учебное пособие. Этот вопрос указывает, что вы пропустили некоторые разделы. –

    +0

    Пойдите изучите еще немного. –

    ответ

    0

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

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

    +0

    для экземпляра: a = "" "aaa" "" ", он тоже не будет работать, есть ли способ динамического компиляции кода и попытаться поймать ошибку и попробовать другой? – mlzboy

    +0

    @mlzboy: Если вы генерируете этот код из чего-то другого, а затем, возможно, избежать всех ваших встроенных кавычек. Таким образом, 'a =" aaa \ "" 'будет' aaa', за которым следует один '' '. –

    +0

    У меня есть процесс на моем пути, это вызовет ошибку, когда используйте «" »и строку endswith», поэтому в конце строки я добавляю пробел, поэтому он не будет генерировать ошибку синтаксиса, после этого я немного убегаю, как вы сказали выше, спасибо – mlzboy

    0

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

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

    Смежные вопросы