下面的Python代码出现了问题。它运行时没有错误,但它并没有给出预期的输出;根本没有文件被写入。
for l in h:
r=l.rfind(",")+1
s=l[r:-2]
j=0
while j<18:
if s[j]==1:
f=codecs.open("genre_"+str(j)+".csv","w","utf-8")
f.write(l)
f.close()
j=j+1h是一个字符串列表,通常类似于1,32,3.5,1112484819,000000000000101100\r\ns是h中字符串的结尾,特别是最后一个数字字符串。s中的每个1,while循环将h的当前字符串写入相应的索引genre_[num].csv文件中。因此,例如,h[2]是上面的示例字符串,文件genre_12.csv、genre_14.csv和genre_15.csv应该用它编写。问题是,在运行代码之后,这些类型的文件甚至没有被创建。
我尝试过代码的其他变体(“使用codecs.open作为f:”),但效果并不好。我漏掉了什么明显的东西吗?
发布于 2016-06-05 20:49:02
问题是,使用s=l[r:-2]将s设置为字符串,然后使用if s[j]==1:检查int。
由于该条件从未满足,因此不会有任何文件被写入。检查字符串"1“,它将工作:
for l in h:
r=l.rfind(",")+1
s=l[r:-2]
j=0
while j<18:
if s[j]=="1":
f=codecs.open("genre_"+str(j)+".csv","w","utf-8")
f.write(l)
f.close()
j=j+1`
发布于 2016-06-05 20:27:22
您需要缩进我们的for-循环中的代码。缩进在python中非常重要,因为没有使用花括号或分号。希望这能解决你的问题!
*德里克
for l in h:
r=l.rfind(",")+1
s=l[r:-2]
j=0
while j<18:
if s[j]==1:
f=codecs.open("genre_"+str(j)+".csv","w","utf-8")
f.write(l)
f.close()
j=j+1https://stackoverflow.com/questions/37646405
复制相似问题