下面的代码下载一个网页、查找和元素,然后运行一个正则表达式来解析字符串中的数字。它似乎适用于我的python3.7测试系统,而不是我的python3.5。我正在下载一个网页,使用Xpath找到一个文本块。xpath返回类似于'International ( 21 )‘或'Books ( 99 )’的内容,我想提取出这个数字,21或99。
在python3.5中,我得到'TypeError:'_sre.SRE_Match‘对象是不可订阅的’‘。
我不相信错误是版本上的差异,但这是唯一已知的差异。当我打印<_sre.SRE_Match对象时,xpath似乎在返回‘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]发布于 2018-01-15 19:10:21
您需要使用捕获组的数量作为参数调用re.MatchObject上的re.MatchObject方法(整个匹配为空白或0)。因此,要获得第一个捕获的组:
CountObj.group(1)编辑:
如果您有多个捕获的组,并且想要它们全部,那么使用groups()方法将它们作为一个元组来获取,例如:
CountObj.groups()或者,如果您想要特定的组,例如第一组和第四组,请使用下面这样的group()来获得被要求组的一个元组:
CountObj.group(1, 4)https://stackoverflow.com/questions/48269215
复制相似问题