我需要从类似的函数中返回价格范围 “ 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'
答案 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和错误处理,它确实要复杂得多,但是以这种方式思考就足以理解您的代码会发生什么)