【发布时间】:2016-04-06 14:10:23
【问题描述】:
我想根据 NO_OF_LINES_PER_FILE 和字典的大小拆分 python 字典并将其写入不同的文件
输入
NO_OF_LINES_PER_FILE
所以如果 NO_OF_LINES_PER_FILE = 2 且字典大小为 10,我希望将字典拆分为 5 个文件(每个文件将有 2 行)
脚本
import csv
NO_OF_LINES_PER_FILE = 2
s = {"2222":["1","2","3"],"3456":["2","3","4"],"5634":["4","5"],"23543":["456","3"],"29587":["4","5"],"244":["23","34"],"455":["3","4"],"244221":["5"],"23232345":["2323","43"]}
def again(c,h,NO_OF_LINES_PER_FILE1):
f3 = open('num_'+str(h)+'.csv', 'at')
if c == 1:
ceh = 2
else:
ceh = c
print ceh
v = 0
for w in s:
v = v + 1
if v < ceh:
pass
elif v > NO_OF_LINES_PER_FILE1:
print "yes"
NO_OF_LINES_PER_FILE1 = NO_OF_LINES_PER_FILE1 + 1
h = NO_OF_LINES_PER_FILE1 + 1
again(c,h,NO_OF_LINES_PER_FILE1)
else:
writer = csv.writer(f3,delimiter = ',', lineterminator='\n',quoting=csv.QUOTE_ALL)
writer.writerow(s[w])
c = c + 1
def split():
f3 = open('has_'+str(NO_OF_LINES_PER_FILE)+'.csv', 'at')
writer = csv.writer(f3,delimiter = ',', lineterminator='\n',quoting=csv.QUOTE_ALL)
c = 0
for w in s:
if c >= NO_OF_LINES_PER_FILE:
NO_OF_LINES_PER_FILE1 = NO_OF_LINES_PER_FILE + 1
h = NO_OF_LINES_PER_FILE
again(c,h,NO_OF_LINES_PER_FILE1)
break
else:
#print NO_OF_LINES_PER_FILE
writer = csv.writer(f3,delimiter = ',', lineterminator='\n',quoting=csv.QUOTE_ALL)
writer.writerow(s[w])
c = c + 1
split()
但是这个脚本不工作并且创建了很多文件
在上面的脚本中 NO_OF_LINES_PER_FILE = 2 并且字典 s 的大小是 9
所以我想要 5 个文件,前四个文件将包含 2 行,第五个文件将包含 1 行
我该如何解决这个问题?
【问题讨论】:
-
如果您可以根据您的输入显示文件的预期内容,将会有所帮助。
-
预期内容:我希望将键 (["1","2","3"]) 的值写入 csv 文件...
-
所以你想要一个包含
(["1","2","3"])的文件?这就是您刚才所说的,但这似乎与您在问题中描述的非常不同。
标签: python csv dictionary split