如何在Python中使用编码utf-8.py而不是cp1252.py

2024-09-27 21:32:01 发布

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

我写了一个非常小的程序,当一行包含某个字符串时,它将一个文件的所有行复制到另一个文件。以下是完整的来源:

f_in = open("all.txt", "r")
f_out = open("all.out", "w")

for line in f_in:
    if "<title>" in line:
        f_out.write(line)

f_out.close()
f_in.close()

在all.txt中找到一个utf-8字符之前,这个方法非常有效。然后它没有说:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 7102: character map to <undefined>

现在我做了一个糟糕的解决方法:在目录\Python\Lib\encodings中,我复制了utf-8.py并将其重命名为cp1252.py。

从现在开始-上面的小程序运行没有问题。但必须有一个更优雅的解决方案。你能告诉我需要什么使植物素使用utf-8.py而不是cp1252.py?

我确信在没有大量转换和解码的情况下,这是可能的—只要告诉Python使用另一个解码而不是cp1252.py即可。


Tags: 文件方法字符串inpy程序txtclose
1条回答
网友
1楼 · 发布于 2024-09-27 21:32:01

使用^{}来读取和写入Unicode值:

import io

with io.open('all.txt', 'r', encoding='utf8') as f_in:
    with io.open('all.out', 'w', encoding='utf8') as f_out:
        for line in f_in:
            if u"<title>" in line:
                f_out.write(line)

重命名编解码器文件是最不应该做的事情。

相关问题 更多 >

    热门问题