【问题标题】:Add in a blank line every Nth group of data in a single ascii file在单个 ascii 文件中每隔 N 组数据添加一个空行
【发布时间】:2020-02-05 14:36:20
【问题描述】:

如何在每次从 0 到 1、1 到 2 的“跳跃”之后添加一个空行。 这是我的代码。

A =  [11,22,33,44,55,66,77,88,99]

with open ("vv.txt" ,"w") as out_file:
    for i in range(3):
        for j in  range(4):
                out_string = str(i) + " " + str(j) + " " +  str(A[i]) + " "
                out_string += "\n"
                out_file.write(out_string)
    out_file.close()

输出:

    0 0 11 
    0 1 11 
    0 2 11 
    0 3 11 
(add a blank line here)
    1 0 22 
    1 1 22 
    1 2 22 
    1 3 22 
(add a blank line here)
    2 0 33 
    2 1 33 
    2 2 33 
    2 3 33 

【问题讨论】:

  • 真的有两个问题....如何写一个空行,好吧,out_file.write('\n') 会写一个新行。然后,您可以根据自己的逻辑在任何地方添加新行,在您的情况下,每次内部 for 循环完成时。

标签: python arrays ascii


【解决方案1】:

在嵌套循环后添加换行符:

A =  [11,22,33,44,55,66,77,88,99]

with open ("vv.txt" ,"w") as out_file:
    for i in range(3):
        for j in  range(4):
                out_string = str(i) + " " + str(j) + " " +  str(A[i]) + " "
                out_string += "\n"
                out_file.write(out_string)
        out_file.write("\n")
    out_file.close()

【讨论】:

    【解决方案2】:

    您需要在外循环之间添加一个空行。
    如果您不希望最后有一个空行(如您的示例输出中所示),您还需要一个 if 语句。

    A =  [11,22,33,44,55,66,77,88,99]
    
    with open ("vv.txt" ,"w") as out_file:
        for i in range(3):
            for j in  range(4):
                    out_string = str(i) + " " + str(j) + " " +  str(A[i]) + " "
                    out_string += "\n"
                    out_file.write(out_string)
            if i < 2:
                    out_file.write("\n")
        out_file.close()
    

    请记住,range(3) 为您提供0,1,2,而您只需要在0 和1 处换行,这就是需要i &lt; 2 的原因。

    【讨论】:

      【解决方案3】:

      期待已久的单线

      print('\n\n'.join('\n'.join('%r %r %r'%(i, j, A[i]) for j in range(4)) for i in range(3)),
            file=open("vv.txt", "w")))
      
      1. 上面的代码没有在文件末尾添加空行(即文件不以"\n\n"结尾)
      2. .join method of strings 非常有用(并且可能导致令人难以置信的滥用行为)。
      3. 使用print(..., file=...) 代替fileobject.write(...) 会自动执行正确的操作,即在文件末尾添加换行符。
      4. print 完成工作后,文件对象会自动关闭并收集垃圾。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-20
        • 2021-07-05
        • 1970-01-01
        • 1970-01-01
        • 2012-05-11
        • 2014-01-02
        • 2012-09-07
        相关资源
        最近更新 更多