首页 > 解决方案 > 在python中返回一个井号(不打印)

问题描述

我需要从函数返回价格范围,例如“150 英镑到 199 英镑”,但是当函数返回值时会转换为“\u00a3150 到 \u00a3199”。

现在我知道值“\u00a”是£的转义版本。

但是当我 print("\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'  

标签: pythonpython-2.7encoding

解决方案


我认为您只是在字符串的内部表示和它的显示方式之间混淆了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 解释器的 eval 循环接近于:

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

(由于 EOF 和错误处理,它确实要复杂得多,但这样想就足以理解你的代码发生了什么)


推荐阅读