【问题标题】:Python 2.7 TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuplePython 2.7 TypeError: %: 'NoneType' 和 'tuple 不支持的操作数类型
【发布时间】:2013-06-14 21:21:07
【问题描述】:

我为 python 生成了以下代码,但由于某种原因,我无法弄清楚它返回错误的原因:

TypeError: unsupported operand type(s) for %: 'NoneType' and 'tuple

我看了下,但我看不出我做错了什么:S

temp_appended_data = []

def runme():
    global temp_appended_data

    def test():
        return "testdata"

    def no():
        return "22453.32214"

    def time():
        return "22:12"

    def name():
        return "george"

    temp_appended_data.append("""test example <br>
                                Test: % <br>
                                no: % <br> 
                                time: % <br>
                                name: % <br>
                                """) % (test(),no(),time(),name())

    print temp_appended_data

runme()

任何人都能够看到并修复我做错了什么?

谢谢 - 海福克斯

【问题讨论】:

    标签: python python-2.7 append string-formatting typeerror


    【解决方案1】:

    list.append 返回None。您可能想移动括号,以便格式化字符串并将其传递给append,而不是附加未格式化的字符串然后尝试格式化None

    temp_appended_data.append("""test example <br>
                                Test: %s <br>
                                no: %s <br> 
                                time: %s <br>
                                name: %s <br>
                                """ % (test(),no(),time(),name()))
    

    另外,% 不是有效的替换字段。您可能打算使用%s

    【讨论】:

    • @Ber -- 对。我没有注意到那个。我只是在解决回溯中的第一个问题。 :)
    • @Bakuriu -- 当您在我的一篇帖子中看到明显错误的内容时,请随时修复它 :) 但是,感谢您的评论让我意识到我的过度热心 % 替换 :)
    • 非常感谢,我已经尝试过 %s 但更改为 % 以尝试使其保持未格式化。我现在在向列表/数组追加超过 1 个项目时遇到了一个相关问题我无法 file.write(temp_append_data) 我应该如何解决这个问题?
    • @Hyflex -- 可能是file.writelines(temp_append_data)file.write('\n'.join(temp_append_data)),虽然如果不知道你在做什么就很难知道。
    • 我尝试了您提供的第二个选项,效果很好,纯属天才。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 1970-01-01
    • 1970-01-01
    • 2018-04-13
    • 1970-01-01
    相关资源
    最近更新 更多