来自Xpath类型的Python Regex错误:'_sre.sre_匹配'对象不是subscriptab

2024-09-30 22:11:43 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的代码下载一个网页,找到一个元素,然后运行一个正则表达式来解析字符串中的一个数字。它似乎适用于我的python3.7测试系统,但不适用于python3.5。我正在下载一个网页,找到一个使用Xpath的文本块。xpath返回类似“International(21)”或“Books(99)”的内容,我想提取出数字21或99。在

在python3.5中,我返回了'TypeError:'_sre.sre_匹配'对象不可订阅。'

我不相信错误是版本之间的差异,但这是唯一已知的差异_sre.sre_匹配当我打印CountObj时,object;span=(14,18),match='(21)>;'。在

我应该为Python3.5做些调整吗?有更好的方法来编写它吗?在

driver = webdriver.Chrome()
driver.get(url); #Download the URL passed from mysql

CatAndCount =  driver.find_element_by_xpath('//h2 [@class="searchResultsTitle"]').text 
 # the above line returns with a name and value like 'International (21)'

CountObj = re.search("\((.*?)\)",CatAndCount)  # look for the number, 21 in example
print (CountObj) # for testing
CountVal=CountObj[1]

Tags: the字符串代码元素网页for系统driver
1条回答
网友
1楼 · 发布于 2024-09-30 22:11:43

您需要调用re.MatchObject上的^{}方法,并将捕获的组的数目作为参数来获得该值(对于整个匹配,为空或0)。因此,要获得第一个捕获的组:

CountObj.group(1)

编辑:

如果您有多个捕获的组,并且想要它们全部,那么使用groups()方法将它们作为一个元组来获取,例如:

^{pr2}$

或者,如果您想要特定的组,例如第一个和第四个捕获的组,请使用group()来获得所请求的组的元组:

CountObj.group(1, 4)

相关问题 更多 >