Python - Regex - 来自Xpath - TypeError:' _sre.SRE_Match'对象不可订阅

时间:2018-01-15 19:02:25

标签: python regex xpath

以下代码下载网页,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]

1 个答案:

答案 0 :(得分:2)

您需要在re.MatchObject上调用group()方法,并将捕获的组数作为参数来获取该值(空白或整个匹配为0)。所以,要获得第一个被捕获的组:

CountObj.group(1)

修改

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

CountObj.groups()

或者如果你想要特定的,例如第一个和第四个被捕获的组,使用下面的group()得到一个被问到的元组:

CountObj.group(1, 4)