首页 > 解决方案 > 如何替换unicode字符?

问题描述

我有一个input.txt包含以下内容的文件():

é

我正在运行以下命令,但未能用字符“a”替换 unicode 字符

尝试 1:打印空白。

>>> file = open("input.txt","r")
>>> print file.read().replace(u"\u00E9","a")

尝试 2:打印空白。

>>> file = open("input.txt","r")
>>> print file.read().decode("utf-8").replace(u"\u00E9","a").encode("utf-8")

注意:我已经完成了这个问题,答案(尝试 2)建议没有工作,不知道为什么。

编辑:

正如 ShadowRanger 在评论中指出的那样,我的问题不完整。对此我深表歉意。

这是尝试 1 的完整代码:

>>> file = open("input.txt","r")
>>> print file.read()
>>> é
>>> print file.read().replace(u"\u00E9","a")
>>> 

以下是尝试 2 的完整代码:

>>> file = open("input.txt","r")
>>> print file.read()
>>> é
>>> print file.read().decode("utf-8").replace(u"\u00E9","a").encode("utf-8")
>>> 

标签: pythonpython-2.x

解决方案


您正在以read-only模式打开文件。如果这是您要实现的目标,您将无法修改文件的内容。

如果您只是想操作从文件中读取的字符串,那么我建议您指定文件编码,以便在程序中无缝操作 unicode 字符。

像这样的东西:

蟒蛇2

# -*- coding: utf-8 -*-

from __future__ import unicode_literals
import io

with io.open("input.txt", mode="r", encoding="utf-8"):
    c = file.read()
    c = c.replace("é", "a")
    print c

蟒蛇3

import io

with io.open("input.txt", mode="r", encoding="utf-8") as file:
    c = file.read()
    c = c.replace("é", "a")
    print(c)

推荐阅读