TypeError:'_ sre.SRE_Match'对象没有属性'__getitem__'

 瑞景地产王琴 发布于 2023-01-18 19:21

我目前收到此错误,不知道是什么意思.它是一个scrapy python项目,这是我看到的错误:

  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__'

代码:

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)

在此先感谢您的帮助!

2 个回答
  • 您不能通过以下方式访问匹配的结果:

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

    而是这样做

            if parts:
                matched = parts.group(1)[:-1]
    

    有关正则表达式匹配组的更多信息,请点击这里

    2023-01-18 19:24 回答
  • re.match调用的结果是一个SRE_Match对象,它不支持[]运算符(aka __getitem__).我想你想要的

    if parts is not None:
        if parts.group(1):
            <blah>
    

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

    2023-01-18 19:25 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有