python - 如何将unicode日语从一个文件写入另一个文件?
问题描述
我有一些 json 文件,并且文件中有一些地方带有编码的日文\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
,我想将它们解码成日文。
问题是当我使用这种方法时:
text = '\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831'
print(text)
它打印了
本・雑誌・書籍情報
但是当我直接从文件中读取它时,例如,准备好的文件是 index.json ,它的内容只是:
\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
我使用的方法是
file = open('index.json','r')
text = file.read()
print(text)
它刚刚打印出来
\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
我发现有点奇怪的一件事是,当我尝试打印时:
print(file.read())
print(text)
即使使用file.read()
,也不会返回任何内容file.read(1)
。
编辑:我发现主要问题是当您编写时text = '\u672c'
,python 会识别\u672c
为单个字符。但是当您从文件中读取时,它会将其识别为包含 6 个字符的字符串。无论如何要转换它?
解决方案
这里有几个问题。
假设您的文件包含以下(文字)文本:
\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
您可以在 Python 中将其表示为
text = '\\u672c\\u30fb\\u96d1\\u8a8c\\u30fb\\u66f8\\u7c4d\\u60c5\\u5831'
或者
text = r'\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831'
要将文字转义转换为它们所代表的 Unicode 字符,您需要正确解码它们:
text.encode('ascii').decode('unicode-escape')
结果是
本・雑誌・書籍情報
file.read()
对您不起作用的原因file.read(1)
是文件不会自动倒带。读入文件后,它就在最后,直到您手动倒带或关闭并重新打开它。
推荐阅读
- javascript - React 材料表不会再过滤也不会分页
- html - 具有相对和固定属性的内容流问题
- html - Go 默认servemux的奇怪错误神奇地消失了
- python - Django 模板中的 if 和 else 语句
- sql-server - 在非规范化表中分组
- swift - 在 Swift、XCode 12 中将双精度数舍入到小数点后 2 位
- regex - 正则表达式 set =self 以逗号分隔的字符串
- javascript - 如何在 JSX 中结合 toLocaleString() 和 toFixed(2)?
- python - 图和子图刻度标签重叠
- python - 关系“project_app_category”处的编程错误不存在