【问题标题】:How can I add a space after every two characters in .txt file? [duplicate]如何在 .txt 文件中每两个字符后添加一个空格? [复制]
【发布时间】:2021-02-01 12:12:20
【问题描述】:

我的输入是 .TXT 文件中的大量字符(超过 18,000 个字符),我需要在每两个字符后添加一个空格。如何编写代码以再次在 .TXT 文件中提供输出?
像这样;

  • 输入:
 123456789 
  • 输出:
 12 34 56 78 9

【问题讨论】:

    标签: python txt


    【解决方案1】:

    试试下面的

    txt = '123456789'
    print(*[txt[x:x+2] for x in range(0, len(txt), 2)])
    

    输出

    '12 34 56 78 9'
    

    【讨论】:

    • 非常感谢@Shijith 我没有意识到我缺少引号
    • 请注意,这依赖于 print 函数的 sep 参数,但 OP 对打印不感兴趣,而不是写入文件,file.write(*[txt[x:x+2] for x in range(0, len(txt), 2)]) 将不起作用...跨度>
    【解决方案2】:

    这将产生12 34 56 78 9

    t = '123456789'
    ' '.join(t[i:i+2] for i in range(0, len(t), 2))
    

    如果文件非常大,您不会希望将其全部读入内存,而是读取一个字符块,并将它们写入输出句柄,然后循环。

    包括读/写:

    write_handle = open('./output.txt', 'w')
    
    with open('./input.txt') as read_handle:
        for line in read_handle:
            write_handle.write(' '.join(line[i:i+2] for i in range(0, len(line), 2)))
    
    write_handle.close()
    

    【讨论】:

      【解决方案3】:

      enumerate() 函数将在这里为您完成繁重的工作,我们需要做的就是遍历字符串并使用模来分割两个字符,下面是一个工作示例!

      string_of_chars = "123456789101213141516171819"
      spaced_chars = ""
      
      for i, c in enumerate(string_of_chars):
        if i % 2 == 1:
          spaced_chars += c + " "
        else:
          spaced_chars += c
      
      print(spaced_chars)
      

      【讨论】:

      • 谢谢!这似乎是适当的策略,但是我不确定如何提供 .txt 文件的输入并启用输出?
      • 您需要保存回文件吗?
      • 我需要间隔输入,以便我可以按照我需要的格式对其进行编码。如果它是同一个文件,那会是理想的吗? (对不起,这是我学习python的第一天)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 2015-05-26
      • 1970-01-01
      相关资源
      最近更新 更多