g.d*_*d.c 5 python character-encoding ebcdic
我正在传递ebcdic编码的数据。就像是:
s = u'@@@@@@@@@@@@@@@@@@@ÂÖÉâÅ@ÉÄ'
Run Code Online (Sandbox Code Playgroud)
尝试.decode('cp500')是错误的,但是正确的方法是什么?如果我将字符串复制到类似Notepad ++的文件中,则可以将其从EBCDIC转换为ascii,但是我似乎在python中找不到可行的方法来实现这一点。对于它的价值,正确的结果是:(BOISE ID加或减空格)。
该信息是从JSON对象行的文件中检索的。该文件如下所示:
{ "command": "flush-text", "text": "@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O" }
{ "command": "flush-text", "text": "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\u00C9\u00C4@\u00D5\u00A4\u0094\u0082\u0085\u0099z@@@@@@@@@@\u00D9\u00F5\u00F9\u00F7\u00F6\u00F8\u00F7\u00F2\u00F4" }
{ "command": "flush-text", "text": "@@@@@OmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmO" }
{ "command": "flush-text", "text": "@@@@@O@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@O" }
Run Code Online (Sandbox Code Playgroud)
处理循环如下所示:
with open('myfile.txt', 'rb') as fh:
for line in fh:
data = json.loads(line)
Run Code Online (Sandbox Code Playgroud)
如果 Notepad++ 可以正常转换它,那么您应该只需要:
Python 2.7:
with io.open('myfile.txt', 'r', encoding="cp500") as fh:
for line in fh:
data = json.loads(line)
Run Code Online (Sandbox Code Playgroud)
Python 3.x:
with open('myfile.txt', 'r', encoding="cp500") as fh:
for line in fh:
data = json.loads(line)
Run Code Online (Sandbox Code Playgroud)
这使用 TextWrapper 在使用给定解码读取文件时对文件进行解码。io模块提供 Python 3open到 Python 2.x,具有编解码器/TextWrapper 和通用换行符支持
| 归档时间: |
|
| 查看次数: |
5167 次 |
| 最近记录: |