为什么我不能在我的表中加上“£”符号精神病。视觉。文本刺激?

2024-09-26 18:06:21 发布

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

我正在尝试使用python2.7.15和psychopy1.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)

我想知道如何在我的文字刺激开始时加入“£”符号。非常感谢。你知道吗


Tags: totextinpos文本错误符号win
2条回答

错误是明确的。"£"不是ascii字符。它是unicode字符U+00A3。由于错误说明字节0xc2无法解码,我假设您的源代码是utf8编码的(utf-8编码时"£"读作b'\xc2\xa3')。你知道吗

不太确定,因为我没有python 2.7.15和Psychopy 1.90.2系统,但我会尝试在这里传递unicode字符串:

bonus = visual.TextStim(win, text=text_to_print.decode('utf-8'), pos=[0.7,-0.35],
                        height=TEXT_STIM_HEIGHT, font="Arial", bold=True)

在非ascii字符前面加上u(表示“unicode”),以便:

text_to_print = u"£" + str(money)

当一个字符是unicode时,其他字符也会是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中不应该造成问题。你知道吗

相关问题 更多 >

    热门问题