Преобразование символов Юникода в числа с плавающей запятой Python - PullRequest
0 голосов
/ 05 августа 2020

У меня есть следующий код, написанный в Python 3.6:

u"\u2500" * 4

, который дает мне «────»

Однако, когда я запускаю свой код в Python 2.7.15, это дает мне эту ошибку:

TypeError: невозможно умножить последовательность на не-int типа float

Кажется, что целое число 4 стал плавающим (4.0). Почему это происходит?

Я попробовал это, и это сработало:

 u"\u2500" * int(4)

Кто-нибудь может мне объяснить, почему целое число преобразуется в float? И верный ли способ решить мою проблему - это преобразование обратно в int?

1 Ответ

1 голос
/ 05 августа 2020

Похоже, вы запускаете u"\u2500" * 4.0, а не u"\u2500" * 4. И тогда ошибка очевидна. Поэтому вам следует перепроверить свой код перед этим вызовом. Проблема кажется не здесь, а где-то выше.

Вы всегда можете открыть консоль и проверить такое поведение.

etoneja@ois ~ $ python2
Python 2.7.18rc1 (default, Apr  7 2020, 12:05:55)
>>> u"\u2500" * 4
u'\u2500\u2500\u2500\u2500'
>>> print u"\u2500" * 4
────
>>> print u"\u2500" * 4.0
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
TypeError: can't multiply sequence by non-int of type 'float'
...