首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError:“_sre.SRE_Match”对象没有特性“”__getitem__“”

TypeError:“_sre.SRE_Match”对象没有特性“”__getitem__“”
EN

Stack Overflow用户
提问于 2014-03-11 07:46:58
回答 2查看 20.4K关注 0票数 19

我目前收到了这个错误,不知道这是什么意思。这是一个糟糕的python项目,这是我看到的错误:

代码语言:javascript
复制
  File "/bp_scraper/bp_scraper/httpmiddleware.py", line 22, in from_crawler
    return cls(crawler.settings)
  File "/bp_scraper/bp_scraper/httpmiddleware.py", line 12, in __init__
    if parts[1]:
TypeError: '_sre.SRE_Match' object has no attribute '__getitem__'

代码:

代码语言:javascript
复制
import re
import random
import base64
from scrapy import log
class RandomProxy(object):
    def __init__(self, settings):
        self.proxy_list = settings.get('PROXY_LIST')
        f = open(self.proxy_list)

        self.proxies = {}
        for l in f.readlines():
            parts = re.match('(\w+://)(\w+:\w+@)?(.+)', l)

            if parts[1]:
                parts[1] = parts[1][:-1]

            self.proxies[parts[0] + parts[2]] = parts[1]

        f.close()
    @classmethod
    def from_crawler(cls, crawler):
        return cls(crawler.settings)

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

发布于 2014-03-11 07:52:01

re.match调用的结果是SRE_Match对象,该对象不支持[]运算符(也称为__getitem__)。我觉得你想

代码语言:javascript
复制
if parts is not None:
    if parts.group(1):
        <blah>

不幸的是,parts.group(1)不是可变的,所以您必须创建另一个变量来保存您想要对其进行的更改。

票数 18
EN

Stack Overflow用户

发布于 2014-03-11 07:51:05

您无法访问匹配的结果,如下所示:

代码语言:javascript
复制
        if parts[1]:
            parts[1] = parts[1][:-1]

相反,这样做,

代码语言:javascript
复制
        if parts:
            matched = parts.group(1)[:-1]

有关正则表达式匹配组here的更多信息

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22313702

复制
相关文章

相似问题

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