这些输出存储在csv文件中:
$http
这是程序的输出。我得到了这个:
go:[u'forward', u'always', u'somewhere', u'very', u'now', u'somewhere', u'up']
incorrect:[u'little']
hide:[u'somewhere']
had:[u'little']
jiggle: [u'forward', u'little', u'little']
现在,当我想要检索值时,会产生问题。 例如,
for a in consolidated:
print a, consolidated[a]
writer2.writerow([a, consolidated[a]])
它没有给出键的值。如何检索键的每个值?
或者我该如何存储它:
for i in consolidated[a]:
print i
答案 0 :(得分:0)
假设您的字典d
包含密钥go
,incorrect
和had
等,并且它们的值是列表,则可以将其写入文件:< / p>
s=''
for k,v in d.items():
s += "{},{}\n".format(k,','.join(v))
with open('myfile.txt','w') as f:
f.write(s)
请注意,该键将对应于每行上的第一个字符串,例如。 go,forward,always,...\nincorrect,little
等。
csv在每一行上应该具有相同数量的值/逗号,因此如果您想要保存到文件的可变长度列表,则可能不是您想要的。 然后检索数据,您可以执行以下操作:
d={}
with open('myfile.txt','r') as f:
for line in f:
words=line.split(',')
d[words[0]] = words[1:]
如果您需要格式化为unicode,则可以使用codecs.open(file,'w','utf-8')
之类的内容。
答案 1 :(得分:0)
好的,假设您有一个包含数组值的字典,并且希望以这种格式将它们存储为csv:"key", "val1,val2,val3"
- 其中"
是csv引用字符,,
是除界。
这是您存储和阅读的方式。
import csv
options = {
"delimiter" : ",",
"quotechar" : "\"",
"quoting" : csv.QUOTE_MINIMAL
}
def create(dic, filename):
data = []
for key, values in dic.items():
data.append([key, options['delimiter'].join(values)])
with open(filename, 'wb') as csvfile:
spamwriter = csv.writer(csvfile, **options)
for line in data:
spamwriter.writerow(line)
def readFile(filename, _unicode=False):
data = {}
with open(filename, 'rb') as csvfile:
spamreader = csv.reader(csvfile, **options)
for row in spamreader:
values = row[1].split(options['delimiter'])
if _unicode:
values = [unicode(value) for value in values]
data[row[0]] = values
return data
d = {
"Hello" : ['aa','bb','cc','dd'],
"World" : ['e','f','g','h']
}
filename = "dataFile.csv"
create(d, filename)
# print as strings
print readFile(filename)
print readFile(filename, True)
这将输出以下内容:
# string values
{
'World': ['e', 'f', 'g', 'h'],
'Hello': ['aa', 'bb', 'cc', 'dd']
}
# unicode values
{
'World': [u'e', u'f', u'g', u'h'],
'Hello': [u'aa', u'bb', u'cc', u'dd']
}
当你打开csv文件时,它的外观如下: