首页 > 解决方案 > 追加到列表后列表索引超出范围python

问题描述

我想通过在冒号处拆分每个代理来添加每个代理,然后添加到列表中。我需要做的一件事是然后将冒号添加回 4 个列表索引中的前 3 个的末尾,我不能这样做,因为在测试以确保它编译时我得到了这个错误,lists index out of range.所以我想好吧,也许他们都是附加到列表中的一个字符串中,所以我做了一个打印语句,我看到了这个,[['fa8tUVQ.usa.unknownproxies.com', '10000', 'mferraro2304', 'o3VXtvjHpWr4\n']]双括号是否有可能把它搞砸了?如果是这样,我该如何删除它然后继续重新添加冒号?这是我的代码:


for lines in ordered_proxies:
    pvar = lines.split(':')  # rotating proxy or host
    pvars.append(pvar)
print(pvars)
PROXY_HOST = pvars[0]
PROXY_PORT = pvars[1]
PROXY_USER = pvars[2]
PROXY_PASS = pvars[3]

manifest_json = """
{
"version": "1.0.0",
"manifest_version": 2,
"name": "Chrome Proxy",
"permissions": [
"proxy",
"tabs",
"unlimitedStorage",
"storage",
"<all_urls>",
"webRequest",
"webRequestBlocking"
],
  "background": {
      "scripts": ["background.js"]
},
  "minimum_chrome_version":"22.0.0"
 }
 """
background_js = """
var config = {
mode: "fixed_servers",
rules: {
singleProxy: {
   scheme: "http",
   host: "%s",
   port: parseInt(%s)
   },
   bypassList: ["localhost"]
   }
};
chrome.proxy.settings.set({value: config, scope: "regular"}, function() {});

function callbackFn(details) {
    return {
    authCredentials: {
    username: "%s",
    password: "%s"
    }
    };
    }

    chrome.webRequest.onAuthRequired.addListener(
          callbackFn,
          {urls: ["<all_urls>"]},
          ['blocking']
);
""" % (PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASS)
get_chromedriver()

标签: python

解决方案


我将假设 pvars 是一个列表,并且我将假设 ordered_proxies 是某种具有多行的集合,例如文件。这是你正在做的事情:

您正在遍历ordered_proxies 的行。您正在拆分每一行。函数“split”返回一个列表,您将其附加到 pvars。所以当你的循环完成时,pvars 是一个复杂的数据结构:它是一个列表列表。

pvars[0] 是您拆分ordered_proxies 的第一行时获得的字符串列表。pvars[0] 的长度等于第一行中以冒号分隔的项目数。

pvars[1] 是拆分第二行ordered_proxies 时得到的字符串列表。

pvars 的长度是ordered_proxies 中的行数。

print 语句告诉您 pvars 是一个列表(这就是外部方括号的含义),其中包含一个列表(由内部方括号分隔)。双方括号并没有“搞砸”任何事情;它告诉你 pvars 的长度是 1,它唯一的元素是一个四项列表。

当您尝试访问 pvars 中的第二个元素 pvars[1] 时会出现错误,因为 pvars 没有第二个元素。

我无法理解您要做什么,但我可以看到您的代码为什么不起作用。


推荐阅读