python-3.x - Python:文件中的反斜杠 (\u...)
问题描述
我有一个包含 \u 格式的 unicode 字符的文件。我想将它们作为普通的 unicode 字符串写入另一个文件。但我无法将反斜杠解释为转义字符。
所以我在一个文件中有这个,例如,
\u1203\u1208\u1208 \u0074\u00E4\u0068\u0061\u006C\u00E4\u006C\u00E4
应该像这样打印出来。
>>> print("\u1203\u1208\u1208 \u0074\u00E4\u0068\u0061\u006C\u00E4\u006C\u00E4")
ሃለለ tähalälä
但相反,我得到了这个。
>>> with open('ti.txt') as f:
for line in f:
print(line)
\u1203\u1208\u1208 \u0074\u00E4\u0068\u0061\u006C\u00E4\u006C\u00E4
我已经尝试了我能想到的所有str()
,repr()
的组合。encode().decode()
但是这些反斜杠最终仍然是反斜杠。
解决方案
最佳答案(2021+):
使用自 Python 2.4+ 以来存在的内置编解码器库: https ://docs.python.org/3/library/codecs.html#codecs.decode
例子:
import codecs
# This is True (successfully decoded):
print(codecs.decode(r"\u1234", "unicode_escape") == "\u1234")
有了这个答案,您无需将字符串转换为bytes
-type 对象即可对其进行解码。它替代了许多人错误使用的糟糕的“str.encode().decode()”模式。
推荐阅读
- javascript - google-play-scraper 和节点错误
- android - 如何从底部导航视图更改特定图标图像
- python-3.x - python3 sqlite3无法在Windows中打开数据库
- android - 我如何在不丢失任何数据的情况下迁移 Realm - Kotlin
- sqlite - 查询以从 SQLite 数据库中检索来自 Skype 对话的消息
- kubernetes - 如何通过 Terraform 管理多个 Kubernetes 集群?
- php - 替换斜杠 / 用于破折号 - 在降价文件中
- docker - Docker 容器端口在 Windows 上公开,但在 Ubuntu 上不公开
- git - Git Pull 删除了我的整个项目和本地存储库
- python - 使用 read_excel 方法时 DataFrame 不存在