将python chr()函数与变音符号组合使用
我正在编写一个Python脚本来为字符串添加变音符号(在U+03XX范围内)。然而,将python chr()函数与变音符号组合使用,python,python-3.x,unicode,Python,Python 3.x,Unicode,我正在编写一个Python脚本来为字符串添加变音符号(在U+03XX范围内)。然而,chr()每次尝试将该范围内的数字转换为字符时都会抱怨。(这是Python3,所以没有unichr) 以下是我的代码的截断版本: strl = list(input()) args = input().split(" ") strl[int(args[0])]+=chr(int(args[1])+0x300) #this is the line that breaks 它崩溃时出现以下异
chr()
每次尝试将该范围内的数字转换为字符时都会抱怨。(这是Python3,所以没有unichr
)
以下是我的代码的截断版本:
strl = list(input())
args = input().split(" ")
strl[int(args[0])]+=chr(int(args[1])+0x300) #this is the line that breaks
它崩溃时出现以下异常:
UnicodeEncodeError: 'charmap' codec can't encode character '\u0300' in position 16: character maps to <undefined>
UnicodeEncodeError:“charmap”编解码器无法对位置16中的字符“\u0300”进行编码:字符映射到
那么,如何将整数转换为组合变音符号的字符串表示形式呢
(例如,如果我将字符串中的“重音符号”
放在strl
中,将中的“0”放在args
中,我希望strl
最后变成[“a”,“c”,“c”,“e”,“n”,“t”,“m”,“a”,“r”,“k”,“s”]
更新:在评论中,delnan向我解释说chr()
工作正常,但程序拒绝打印字符串。如何打印包含此代码块字符的字符串(已存储在变量中)?这里的问题不在于chr()
;问题只是Windows控制台无法显示有问题的字符。感谢所有在评论中帮助我解决这个问题的人。请给出一些strl
和args
的示例值。具体是哪个版本的Python?它在3.3.2上工作。我能够获得chr(0x300)
在Python 3.3
上运行,因此我怀疑您的问题在于int(args[1])
,但如果没有实际导致中断的值,则无法测试该问题。异常类型和消息表明它正确创建了U+0300代码点,并且仅未能将其编码为某种编码(例如,在写入字节流时)。回溯指向哪一行?您的控制台不支持打印该范围内的字符。如果是Unix控制台,则可能缺少某些区域设置。如果是Windows控制台,则MS C stdlib不支持Unicode。