我被传送的数据是ebcdic编码的。类似于:
s = u'@@@@@@@@@@@@@@@@@@@ÂÖÉâÅ@ÉÄ'尝试.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" }处理循环看起来类似于:
with open('myfile.txt', 'rb') as fh:
for line in fh:
data = json.loads(line)发布于 2016-01-31 09:16:34
如果Notepad++将其转换为ok,则只需:
Python2.7:
with io.open('myfile.txt', 'r', encoding="cp500") as fh:
for line in fh:
data = json.loads(line)Python3.x:
with open('myfile.txt', 'r', encoding="cp500") as fh:
for line in fh:
data = json.loads(line)这使用一个TextWrapper来解码文件,因为它是用给定的解码来读取的。io模块为Python2.x提供了Python3 open,并提供了编解码器/TextWrapper和通用换行符支持
发布于 2016-01-31 09:14:07
我的猜测是,您需要相应的Unicode序号的值作为字节,然后用cp500解码。
>>> s = u'@@@@@@@@@@@@@@@@@@@ÂÖÉâÅ@ÉÄ'
>>> bytearray(ord(c) for c in s).decode('cp500')
u' BOISE ID'另一种选择是:
>>> s.encode('latin-1').decode('cp500')
u' BOISE ID'https://stackoverflow.com/questions/35111900
复制相似问题