首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在循环中编写文件时遇到麻烦(Python)

在循环中编写文件时遇到麻烦(Python)
EN

Stack Overflow用户
提问于 2016-06-05 20:23:30
回答 2查看 78关注 0票数 0

下面的Python代码出现了问题。它运行时没有错误,但它并没有给出预期的输出;根本没有文件被写入。

代码语言:javascript
运行
复制
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
  • h是一个字符串列表,通常类似于1,32,3.5,1112484819,000000000000101100\r\n
  • sh中字符串的结尾,特别是最后一个数字字符串。
  • 对于字符串s中的每个1,while循环将h的当前字符串写入相应的索引genre_[num].csv文件中。

因此,例如,h[2]是上面的示例字符串,文件genre_12.csvgenre_14.csvgenre_15.csv应该用它编写。问题是,在运行代码之后,这些类型的文件甚至没有被创建。

我尝试过代码的其他变体(“使用codecs.open作为f:”),但效果并不好。我漏掉了什么明显的东西吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-05 20:49:02

问题是,使用s=l[r:-2]将s设置为字符串,然后使用if s[j]==1:检查int。

由于该条件从未满足,因此不会有任何文件被写入。检查字符串"1“,它将工作:

代码语言:javascript
运行
复制
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

`

票数 0
EN

Stack Overflow用户

发布于 2016-06-05 20:27:22

您需要缩进我们的for-循环中的代码。缩进在python中非常重要,因为没有使用花括号或分号。希望这能解决你的问题!

*德里克

代码语言:javascript
运行
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37646405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档