以下代码下载网页,find和element然后运行正则表达式来解析字符串中的数字。它似乎适用于我的python 3.7测试系统,但不适用于我的python 3.5。我正在下载一个网页,使用Xpath查找文本块。 xpath返回类似'国际(21)'或者'书籍(99)'我想提取数字,21或99。
在python 3.5中,我回来了 TypeError:' _sre.SRE_Match'对象不可订阅。'
我不相信错误是版本的差异,但这是唯一已知的差异。 xpath似乎正在工作,因为它返回' < _sre.SRE_Match对象;我打印CountObj时,span =(14,18),match ='(21)'>' 。
我是否应该为python 3.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]
答案 0 :(得分:2)
您需要在re.MatchObject
上调用group()
方法,并将捕获的组数作为参数来获取该值(空白或整个匹配为0)。所以,要获得第一个被捕获的组:
CountObj.group(1)
修改强>
如果你有多个被捕获的组,并且想要它们全部,那么使用groups()
方法将它们作为一个元组来获取,例如:
CountObj.groups()
或者如果你想要特定的,例如第一个和第四个被捕获的组,使用下面的group()
得到一个被问到的元组:
CountObj.group(1, 4)