我目前正在尝试使用python 2.7.15和Psychopy 1.90.2打印文本刺激。不幸的是,“£”符号导致visual.TextStim的初始化抛出错误:

money = 2
text_to_print = "£" + str(money)
bonus = visual.TextStim(win, text=text_to_print, pos=[0.7,-0.35], height=TEXT_STIM_HEIGHT, font="Arial", bold=True)
bonus.setColor('GoldenRod')
bonus.wrapWidth=1


该错误显示为:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 0: ordinal not in range(128)


我想知道如何在文字刺激开始时加入“£”符号。谢谢。

最佳答案

为非ASCII字符加上u前缀(用于“ unicode”),因此:

text_to_print = u"£" + str(money)


当一个字符是unicode时,其他字符也是如此,就像您添加整数和浮点数时一样-选择了更全面的数据类型。上面的代码比冗长的等效代码更简单:

text_to_print = "£" + str(money)  # Non-unicode; older libraries will go ahead and make it ascii
text_to_print.decode('utf-8')  # Use this. Libraries respect this (except the csv module)


从python3起(包括PsychoPy3),默认情况下所有内容均为unicode,因此“特殊”字符在PsychoPy中不会造成问题。

关于python - 为什么在psychopy.visual.TextStim中不能包含“£”符号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51500540/

10-12 18:36