“返回codecs.charmap_编码“运行python脚本时没有异常字符

2024-09-24 04:30:50 发布

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

我试图在CMD中运行我的脚本(它在空闲状态下工作正常),但我得到了以下错误:

C:\Python34>rule90.py Traceback (most recent call last): File "C:\Python34\rule90.py", line 15, in <module> print(c) File "C:\Python34\lib\encodings\cp850.py", line 19, in encode return codecs.charmap_encode(input,self.errors,encoding_map)[0] UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-39: character maps to <undefined>

虽然我对python的经验有限,但我想我知道的足够多,可以解决这个问题。第19行只是linenew = str(''.join(lineA[numberneg:numberpos])),我要连接的lineA由字符串形式的“0”和“1”的加载组成。我确实有■和□字符,但它们应该是cmd中的默认字符,而且错误不在那一行。在

任何帮助都将不胜感激!在

lineA = ['0','0','0','0','0','0','1','0','0','0','0','0','0']
lineB = lineA[:]
lineC = lineA[:]
lineC = ['□' if x=='0' else '■' for x in lineC]
counth = 0
max_counth = len(lineA) - 2
countv = 0
max_countv = len(lineA) / 2 - 1

while countv < max_countv:
    number = 1
    counth = 0
    lineCstr = map(str, lineC)    
    c = ''.join(lineCstr)
    print(c)
    while counth < max_counth:
        numberneg = number - 1
        numberpos = number + 2
        linenew = str(''.join(lineA[numberneg:numberpos]))
        if linenew == str('110') or linenew == str('100') or linenew == str('011') or linenew == str('001'):
            lineB[number] = '1'
            lineC[number] = '■'
        else:
            lineB[number] = '0'
            lineC[number] = '□'
        number = number + 1
        counth = counth + 1

    lineA = lineB[:]
    countv = countv + 1
input("Press Enter to continue...")

lineA通常是一个较长的列表(25+个数字),但为了节省空间,我缩短了它。在


Tags: inpynumbermaxencodejoinstrpython34
1条回答
网友
1楼 · 发布于 2024-09-24 04:30:50

我可以做一个假设。目前,“□”和“■”符号都是Unicode的。你可以得到这样的十六进制代码:

import binascii
print (binascii.hexlify(bytes('□','UTF-8'))) #b'e296a1'
print (binascii.hexlify(bytes('■','UTF-8'))) #b'e296a0'

您可以找到Unicode表here。 由于某些原因,您的控制台无法显示Unicode字符。但您可以在控制台编码中找到它们的等价物:

^{pr2}$

记住每个方块的i的值。然后您可以这样做:

BLACK_SQUARE = ord(some_integer_value)
WHITE_SQUARE = ord(some_integer_value)

lineC = [WHITE_SQUARE if x=='0' else BLACK_SQUARE  for x in lineC]

相关问题 更多 >