我有一个字典,item_dictionary[0]
对应data[0]
,item_dictionary[1]
对应data[1]
。
item_dictionary = {'10350':'cat', '560':'dog'}
names = item_dictionary.values()
data = [[1, 2, 3, 4], [5, 6, 7]]
我尝试将data[0]
和data[1]
中的项目写入不同的.csv文件,如下所示:
def writer(item):
q = data.index(item)
myfile = open('%r.csv', 'wb') % names[q]
wr = csv.writer(myfile)
wr.writerows(data[q])
myfile.close()
z = [writer(x) for x in data]
这将返回错误:
追踪(最近的呼叫最后):
文件“”,第1行,在中 文件“”,第3行,在作者中 TypeError:%:'file'和'str'`的不支持的操作数类型。
我对错误的'str'
部分的猜测是names[q]
返回,比如'cat'
而不是cat
。但是,我不知道要使用哪种操作数类型而不知道如何解决str
问题,那么有人可以帮助我吗?感谢。
答案 0 :(得分:3)
open('%r.csv', 'wb') % names[q]
应为open('%r.csv' % names[q], 'wb')
。
在前一种情况下,您打开一个名为“%r.csv”的文件,以便以二进制模式写入,然后尝试使用names[q]
的内容对文件对象进行模数化。 file
个对象不支持模运算符,因此您获得TypeError
。
在后一种情况下,我们使用模块运算符调用字符串format
的{{1}}方法,从而生成一个传递给%r.csv
函数的字符串。
顺便说一下,您可能想要考虑另一种将名称与数据相关联的方法 - 您可以将数据与数据一起存储在元组,字典或类实例中:
open