我正在传递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)
答案 0 :(得分:4)
如果Notepad ++将其转换为ok,那么您只需要:
Python 2.7:
MATCH (book:Book),(group1:Reader),(group2:Reader)
MATCH (book)<-[:Likes]-(group1)
MATCH (book)<-[:Likes]-(group2)
MATCH (group1)-[r]-(group2)
RETURN group1.Name, type(r), group2.Name
Python 3.x:
with io.open('myfile.txt', 'r', encoding="cp500") as fh:
for line in fh:
data = json.loads(line)
这使用TextWrapper解码文件,因为它使用给定的解码进行读取。 with open('myfile.txt', 'r', encoding="cp500") as fh:
for line in fh:
data = json.loads(line)
模块为Python 2.x提供了Python 3 io
,带有编解码器/ TextWrapper和通用换行支持
答案 1 :(得分:3)
我的猜测是你需要相应的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'