为了账号安全,请及时绑定邮箱和手机立即绑定

禁止在python字符串中指示unicode的u'prefix

禁止在python字符串中指示unicode的u'prefix

梵蒂冈之花 2019-08-02 17:18:45
禁止在python字符串中指示unicode的u'prefix有没有办法在python中全局抑制unicode字符串指示符?我在应用程序中专门使用unicode,并做了很多交互式的东西。将u'prefix'显示在我的所有调试输出中是不必要和令人讨厌的。可以关掉吗?
查看完整描述

3 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

您可以使用Python 3.0 ..默认字符串类型是unicode,因此u''不再需要前缀..


简而言之,没有。你无法关闭它。


所述u来源于unicode.__repr__方法,它是用来在REPL显示的东西:


>>> print repr(unicode('a'))

u'a'

>>> unicode('a')

u'a'

如果我没有弄错,你不能在不重新编译Python的情况下覆盖它。


最简单的方法是简单地打印字符串..


>>> print unicode('a')

a

如果你使用unicode()内置来构造你的所有字符串,你可以做类似的事情。


>>> class unicode(unicode):

...     def __repr__(self):

...             return __builtins__.unicode.__repr__(self).lstrip("u")

... 

>>> unicode('a')

a

但是不要这样做,这太可怕了


查看完整回答
反对 回复 2019-08-02
?
慕村9548890

TA贡献1884条经验 获得超4个赞

我有一个案例,我需要删除你的前缀因为我正在设置一些javascript与python作为HTML模板的一部分。一个简单的输出将u前缀保留为dict键,例如

var turns = [{u'armies':2...];

打破了javascript。

为了获得所需的输出javascript,我使用json python模块为我编码字符串:

turns = json.dumps(turns)

这在我的特定情况下起作用,因为键都是ascii,所以不用担心编码。您可以将此技巧用于调试输出。


查看完整回答
反对 回复 2019-08-02
?
慕容森

TA贡献1853条经验 获得超18个赞

from __future__ import unicode_literals

从Python 2.6(2008年10月1日发布)开始提供。它是Python 3中的默认值。

它允许u''在源代码中省略前缀,尽管它不会改变repr(unicode_string)会产生误导。

您可以sys.displayhook()在Python REPL中覆盖,以显示您喜欢的对象。您也可以覆盖__repr__自己的自定义对象。


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 569 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信