【发布时间】:2021-04-28 06:14:03
【问题描述】:
我正在为我的团队用 Python 构建一个“xpath 解析工具”。 在我的例子中,xpath 脚本不是普通的 xpath,用户输入的语法将在一个特殊的结构中,这里是一个例子:
输入格式如下:(元素可以是元组类型或普通元素)
sig = "(xpath_1_1, xpath_1_2), (xpath_2_1, xpath_2_2), xpath_3..."
用户在excel中编辑的
而我的目标是将字符串解析为带有元组或普通元素的列表类型数据:
[(xpath_1_1, xpath_1_2), (xpath_2_1, xpath_2_2), xpath_3...]
然后我可以将这些数据输入到我的 selenium 中以按顺序对 img 进行快照。
这是我的测试数据之一:
sig = "(//div[@style='font-family:Arial;float: left;width:930px;font-size:12px;' and ./span[contains(text(),'005930')]], //table[@id='gv_flow_krKS0 1']),//table[@id='123456'],(//div[@style='font-family:Arial;float: left;width:930px;font-size:12px;' and ./span[contains(text(),'000660')]], //table[@id='gv_flow_krKS0 2']),//table[@id='456789']"
我想知道有没有更好的方法来实现这个函数而不破坏列表的顺序?
首先,我认为 eval() func 不是一个好主意,因为它可能会导致一些安全问题。
现在我正在尝试使用 re lib 来解决它。
但是我发现这很困难,不知道如何开始。
有人可以帮忙吗?谢谢~
【问题讨论】:
-
我认为您将不得不使用一个状态机来解析这个,该状态机跟踪
( )、[ ]、" "和' '的嵌套。没有简单的正则表达式可以做到这一点。 -
是的,感谢关键字。它认为我应该开始研究像ANTLR这样的工具
标签: python regex parsing xpath python-re