我正在将较旧的 Python 代码移植到 Python 3。该代码在 Python 2.7 中工作。以下行正在创建不平衡括号错误:
pp = re.compile('\\\([^\\<\/td\ *\>\([^\<]*)\<\/td\ *\>\[^\<]*\<\/td\ *\>\([^\<]*)\<\/td\ *\>\([^\<]*)\<\/td\ *\>\([^\<]*)\<\/td\ *\>\<\/tr\ *\>')
我不知道如何解决这个问题。任何建议将不胜感激如何分解并弄清楚。
我正在将较旧的 Python 代码移植到 Python 3。该代码在 Python 2.7 中工作。以下行正在创建不平衡括号错误:
pp = re.compile('\\\([^\\<\/td\ *\>\([^\<]*)\<\/td\ *\>\[^\<]*\<\/td\ *\>\([^\<]*)\<\/td\ *\>\([^\<]*)\<\/td\ *\>\([^\<]*)\<\/td\ *\>\<\/tr\ *\>')
我不知道如何解决这个问题。任何建议将不胜感激如何分解并弄清楚。
您的表达几乎无法阅读,并且大多数\
反斜杠实际上是没有意义的。那些确实有意义的是\[
和\(
组合\)
,其中大多数看起来根本不应该存在。
例如。零件\[^\<]
坏了,因为逃逸\[
使]
支架不平衡。
删除所有反斜杠使模式编译:
>>> re.compile('([^</td *>([^<]*)</td *>[^<]*</td *>([^<]*)</td *>([^<]*)</td *>([^<]*)</td *></tr *>')
<_sre.SRE_Pattern object at 0x7f8c61c76d50>
并不是说这种模式在那种情况下更有意义,因为一[^
开始就有一个表示开放字符类的字符,但是它后面的字符表明这不是那里的意图,\[
我们早期看到的可能是其中的一部分然后上课,但是你会匹配任何不在 set 中的东西{'<', '/', 't', 'd', ' ', '*', '(', '[', '^', '<'}
,这可能也不是你想要的。
简而言之,整个表达式被严重破坏,并且在任何 Python 版本中都无法以当前形式工作。
看起来您正在尝试使用正则表达式解析 HTML。这不会很好地工作。请改用适当的 HTML 解析器,例如 BeautifulSoup 将使提取表格单元格数据的任务变得更加简单。