以二进制形式输出Python字典“值”

2024-03-28 09:11:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我想解决这个问题已经有一段时间了。一直在寻找简单的答案,但没有成功。非常感谢你的帮助。我已经创建了一个python字典,并试图将值的输出格式化为二进制数据。换句话说,对于字典中的每个字符串值,我希望输出其二进制值。下面是我的代码和错误。在

pigpen = {}
pigpen['a'] = 'ETL'
pigpen['b'] = 'ETM'
pigpen['c'] = 'ETR'
pigpen['d'] = 'EML'
pigpen['e'] = 'EMM'
pigpen['f'] = 'EMR'
pigpen['g'] = 'EBL'
pigpen['h'] = 'EBM'
pigpen['i'] = 'EBR'
pigpen['j'] = 'DTL'
pigpen['k'] = 'DTM'
pigpen['l'] = 'DTR'
pigpen['m'] = 'DML'
pigpen['n'] = 'DMM'
pigpen['o'] = 'DMR'
pigpen['p'] = 'DBL'
pigpen['q'] = 'DBM'
pigpen['r'] = 'DBR'
pigpen['s'] = 'EXT'
pigpen['t'] = 'EXL'
pigpen['u'] = 'EXR'
pigpen['v'] = 'EXB'
pigpen['w'] = 'DXT'
pigpen['x'] = 'DXL'
pigpen['y'] = 'DXR'
pigpen['z'] = 'DXB'

import binascii
str = pigpen.values()
print ' '.join(format(ord(string), 'b') for string in str)

Traceback (most recent call last):
  File "pigpen_build.py", line 62, in <module>
    print ' '.join(format(ord(string), 'b') for string in str)
  File "pigpen_build.py", line 62, in <genexpr>
    print ' '.join(format(ord(string), 'b') for string in str)
TypeError: ord() expected a character, but string of length 3 found
>>> 

Tags: inpybuildformatforstring字典line
2条回答

您要求ord根据字符串中的3个字符查找值。关于the ord function here.的更多信息,在for循环中,您正在通过一个列表进行交互,因此展开的代码如下所示。在

for s in ['ABC','CDE','FGH']:
  print s+', ',

它将输出,ABC, CDE, FGH。要解决此问题,请在实际字符串上放置另一个for循环,或者将原始列表合并为一个字符串。在

1)另一个for循环。在

^{pr2}$

2)实际字符串。在

str = ''.join(s for s in str)
print ' '.join(format(ord(stirng), 'b') for string in str)

@Preston用一个更好的答案击败了我,但是这里有一个不使用嵌套列表理解的解决方案。在

binary_translation = []
for string in a:
    for char in string:
        binary_translation.append(''.join(format(ord(char), 'b')))

相关问题 更多 >