TypeError:' NoneType'使用zip_longest时,object不可迭代

时间:2018-06-01 11:41:37

标签: python python-3.x

我正在开发一个python脚本来分析txt文件,然后将其保存到osv文件中。我正在尝试使用" zip_longest"来自模块" itertools"。当我的一个词典不再具有我的价值时,我希望它粘贴一个空格,而另一个词典继续粘贴其值。 我的代码如下所示:

def csvExport(self):
        exportYN = input("Would you like to export the document to a CSV file? (Y/N):")
        if (exportYN == "Y" or exportYN == "y"):
            with open('data.csv', 'w', encoding="utf-8") as csvfile:
                csvfile.write("Username;Repeated;Password;Repeated")
                for (username, usrValue), (password, passValue) in itertools.zip_longest(self.usernames.items(), self.passwords.items()):
                    csvfile.write(str(username) + ";" + str(usrValue) + ";" + str(password) + ";" + str(passValue))

错误代码如下所示:

for (username, usrValue), (password, passValue) in itertools.zip_longest(self.usernames.items(), self.passwords.items()):
TypeError: 'NoneType' object is not iterable

我认为它与zip_longest有关,因为我使用的两个词典的长度不一样。

希望你能提供帮助:)

1 个答案:

答案 0 :(得分:1)

您需要使用fillvalue的{​​{1}}关键字参数:

zip_longest

否则默认值为ziplongest(..., ..., fillvalue=('', '')) ,而None无法填充2元组,例如None

除此之外,由于字典未被排序,(username, usrValue)操作将返回随机对...