在python中返回英镑符号(不打印)

时间:2019-02-18 13:36:05

标签: python python-2.7 encoding

我需要从类似的函数中返回价格范围 “ 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 :(得分:3)

我认为您只是在混淆字符串的内部表示形式和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 

实际上,Python解释器的评估循环非常接近:

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

(由于EOF和错误处理,它确实要复杂得多,但是以这种方式思考就足以理解您的代码会发生什么)