возврат знака фунта в питоне (не печатая) - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть требование вернуть диапазон цен из функции, например, «£ 150 - £ 199», но когда функция возвращает значение покрытия «\ u00a3150 - \ u00a3199».

теперь я понимаю, чтозначение "\ u00a" является экранированной версией £.

, но когда я печатаю ("\ u00a3150"), он печатает £ 150, я пытался использовать кодировку и unichr (163), но я не мог вернуть значение, так как£ 150.

Любая помощь очень ценится.

Просто чтобы сделать ее убедительной ..

def price_range(price):  
     print("Print value {}".format(price))  
     return "Return value {}".format(price)  

Так что теперь, если я отправлю значение "£ 150 до £ 199«выход ниже

>>> price_range("£150 to  £199")  

Print value £150 to  £199  
Return value \xa3150 to  \xa3199'  

1 Ответ

0 голосов
/ 18 февраля 2019

Я думаю, вы просто путаете внутреннее представление строки с тем, как она отображается с помощью print.

Когда вы оцениваете выражение в интерактивном режиме, Python отображает представление результата выражения.

Просто посмотрите это в терминале, используя набор символов Latin1:

>>> t = '\xa3150'
>>> t
'\xa3150'
>>> print t
£150
>>> repr(t)
"'\\xa3150'"
>>> print(repr(t))
'\xa3150'

Аналогично вашему примеру, вы получите правильное отображение, если вы печатаетевозвращаемое значение:

>>> x = price_range("£150 to  £199")
Print value £150 to  £199 
>>> x
'Return value \xa3150 to  \xa3199'
>>> print x
Return value £150 to  £199 

На самом деле цикл eval интерпретатора Python близок к:

while True:
    expr = input(">>> ")
    print(repr(expr))

(Это действительно намного сложнее из-за EOF и обработки ошибок, ноесли подумать об этом, достаточно понять, что происходит с вашим кодом)

...