格式化输出到文件(write())

2024-06-23 03:37:43 发布

您现在位置:Python中文网/ 问答频道 /正文

当我尝试使用.format()将信息写入文件时,我遇到了问题

我正在尝试write()从文本文件读取到另一个文件的文本,然后写入关于每一行的信息:

  • {0}-行数

  • {1}-该行有多少个空格符号

  • {2}-该行总共有多少个符号

def Spausdinti_Faile(duom, tarpai_kiek, simboliai_kiek):
    with open("rez.txt", "w") as fout:

        i = 0
        for i in range(len(duom)):
            fout.write(duom[i])

        print(tarpai_kiek, simboliai_kiek)
        i = 0
        for i in range(len(duom)):
            fout.write("{0} eilutė turi {1} tarpų simbolių ir {2} 
            simbolių.".format(str(i + 1), str(tarpai_kiek[i]), 
            str(simboliai_kiek[i])))

我得到这个错误:

enter image description here


Tags: 文件in信息formatforlenrangewrite
2条回答

由于您在Windows上,文件的默认字符编码是。。。有限的东西

您的语言中的某些字符无法在该字符编码中表示,因此会出现一个错误

打开UTF-8编码的文件;它可以表示任何字符:

with open("rez.txt", "w", encoding="UTF-8") as fout:

您还可以set the ^{} environment variable在Windows上将Python默认设置为UTF-8,这在其他平台上已经是默认设置了

除了@AKX的好答案,您还可以大大简化代码:

def Spausdinti_Faile(duom, tarpai_kiek, simboliai_kiek):
    with open("rez.txt", "w", encoding="UTF-8") as fout:
        fout.write(''.join(duom))
        print(tarpai_kiek, simboliai_kiek)
        for i, v in enumerate(duom):
            fout.write(f"{i + 1} eilutė turi {tarpai_kiek[i]} tarpų simbolių ir {simboliai_kiek[i]} simbolių.")

如果duom不一定只包含字符串,请将fout.write(''.join(duom))更改为fout.write(''.join(map(str, duom)))(感谢AKX指出这一点)

相关问题 更多 >

    热门问题