【问题标题】:What does 'u' mean in a list?列表中的“你”是什么意思?
【发布时间】:2010-12-15 02:41:09
【问题描述】:

这是我第一次遇到这种情况。刚刚打印了一个列表,每个元素前面似乎都有一个u,即

[u'hello', u'hi', u'hey']

这是什么意思,为什么列表的每个元素前面都有这个?

由于我不知道这有多普遍,如果您想看看我是如何发现它的,我会很乐意编辑帖子。

【问题讨论】:

标签: python string unicode


【解决方案1】:

u 仅表示以下字符串是 unicode 字符串(与纯 ascii 字符串相反)。它与恰好包含(unicode)字符串的列表无关。

【讨论】:

    【解决方案2】:

    【讨论】:

    • 此链接不再有效,因为它链接的页面不再提及 Unicode 或 u'
    【解决方案3】:

    它是 unicode 字符串的指示。对于原始字符串,类似于 r''

    >>> type(u'abc')
    <type 'unicode'>
    >>> r'ab\c'
    'ab\\c'
    

    【讨论】:

    • 啊,我以为 r'' 的意思与正则表达式有关?
    • 它通常用于正则表达式,所以我们可以写 r'/[ \t]+/' 而不是 '/[ \\t]+/' (注意双反斜杠 - 你不必在原始字符串中转义,除非你正在转义结束语)。
    • 在正则表达式中经常使用它来避免所有转义的反斜杠
    • r 和 u 有点不同。 u 表示字符串的类型,而 r(或 ru,如果您想使用原始 unicode 文字)生成一个普通的 str(或 unicode,如果 u 和 r 都使用),但在编译时解析不同。 &gt;&gt;&gt; repr(r'foo') "'foo'" &gt;&gt;&gt; repr(u'foo') "u'foo'" 注意 r 是如何消失的(这只是反斜杠的作用)而 u 没有(因为它会生成不同类型的对象。)
    • 如果您的字符串是仅使用 ascii 字符的 unicode 字符串(如您的示例),in 操作将隐式转换字符串,您将得到 True: 'abc' in [u 'abc'] 结果为True。如果你的 unicode 字符串使用了 ascii 字符集之外的字符,你自然会在这样的测试中得到False
    【解决方案4】:

    我相信 u' 前缀会创建一个 unicode 字符串而不是常规的 ascii

    【讨论】:

      猜你喜欢
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2011-08-12
      • 2017-06-11
      • 2018-03-05
      • 2023-03-27
      • 1970-01-01
      • 2012-09-20
      相关资源
      最近更新 更多