首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python源自Xpath - TypeError:'_sre.SRE_Match‘对象不可订阅

Python源自Xpath - TypeError:'_sre.SRE_Match‘对象不可订阅
EN

Stack Overflow用户
提问于 2018-01-15 19:02:24
回答 1查看 10.9K关注 0票数 6

下面的代码下载一个网页、查找和元素,然后运行一个正则表达式来解析字符串中的数字。它似乎适用于我的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做些调整吗?有更好的方法来编写吗?

代码语言:javascript
复制
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]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 19:10:21

您需要使用捕获组的数量作为参数调用re.MatchObject上的re.MatchObject方法(整个匹配为空白或0)。因此,要获得第一个捕获的组:

代码语言:javascript
复制
CountObj.group(1)

编辑:

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

代码语言:javascript
复制
CountObj.groups()

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

代码语言:javascript
复制
CountObj.group(1, 4)
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48269215

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档