python - 如何替换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")
>>>
解决方案
您正在以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)
推荐阅读
- java - SQLite Java:连接到加密数据库
- xml - xslt - 向所有匹配的 xml 子元素添加属性(不移动它们)
- node.js - Facebook 图形 API 批处理请求
- c++ - 在 MacOS 上写入串行端口时出现问题
- reflection - Kotlin 和使用 kotlin-reflect 对属性进行反射
- batch-file - 检查文件名是否包含子字符串
- javascript - 格式化文本使条件介于 2 个单词之间
- algorithm - 找到具有特定总和的数字对
- c++ - 位设置为浮点值或双精度值 C++
- javascript - 用于浏览网站的 JavaScript 脚本?