筛选器对象没有属性弹出


colorramps = re.split("#ramp[([0-9a-fA-F]{6})](.+?)#rampend[([0-9a-fA-F]{6})]", message)
colorramps.reverse()
if len(colorramps) > 1:
    starttext = colorramps.pop()
    starttext = starttext.replace("$message", getSaveString(text))
    starttext = starttext.replace("$playername", getSaveString(username), 1)
    complete = [starttext]
    while len(colorramps):
        startcolor = getColor(colorramps.pop())
        colors = filter(None, re.split("#over[([0-9a-fA-F]{6})]", colorramps.pop()))
        middletxt = colors.pop()
        endcolor = getColor(colorramps.pop())
        middletxt = middletxt.replace("$message", getSaveString(text))
        middletxt = middletxt.replace("$playername", getSaveString(username), 1)
        middletxt = middletxt.decode("utf")
        if len(colors) > 0:
            colors = map(getColor, colors)
            colors.append(endcolor)
            middletxt = rangeOverColors(middletxt, startcolor, colors)
        else:
            middletxt = getRangeString(middletxt, startcolor, endcolor)
        middletxt = middletxt.encode("utf")
        complete.append(middletxt)
        endtext = colorramps.pop()
        endtext = endtext.replace("$message", getSaveString(text))
        endtext = endtext.replace("$playername", getSaveString(username), 1)
        complete.append(endtext)
    message = "".join(complete)
else:
    message = message.replace("$message", getSaveString(text))
    message = message.replace("$playername", getSaveString(username), 1)
return message

大家好!我进入第 128 行,替换色带 middletxt = colors.pop()

属性

错误:"过滤器"对象没有属性"pop"

我在python 2.5中使用了这段代码,现在我将其移植到3.4。

有人可以帮助我吗

你在 Python 3 中运行这个吗?

在Python 2.7中,filter()返回了一个list,它.pop()函数。
在Python 3.x中filter()返回一个filter可迭代对象,该对象没有。

在 Python 3 中.pop() filter之前,您需要将其转换为列表。所以添加例如

colors = list(colors) 

colors = filter(...)线之后。在 Python 2.7 中,这将不起作用,因此您的代码将继续在那里工作。有关详细信息和这些文档,请参阅此问题。

最新更新