Python-“u”和“r”字符串标志具体做什么,什么是原始字符串文字?
在问这个问题时,我意识到我对原始字符串不了解很多。对于自称是Django培训师的人来说,这很糟糕。
我知道什么是编码,而且我知道u''
自从得到Unicode
以来,它独自做什么。
但是究竟是
r''
什么呢?它产生什么样的字符串?最重要的是,
ur''
该怎么办?最后,有没有可靠的方法可以从Unicode字符串返回到简单的原始字符串?
嗯,顺便说一句,如果你的系统和文本编辑器字符集设置为UTF-8,u’‘实际上有什么作用吗?
回答:
实际上并没有任何“原始字符串 ”。有原始的字符串文字,它们恰好是'r'
在引号前用a
标记的字符串文字。
“原始字符串文字”与字符串文字的语法略有不同,其中\
反斜杠“”
代表“只是反斜杠”(除非在引号之前会终止该文字),否则“转义序列”代表换行符,制表符,退格键,换页等。在普通的字符串文字中,每个反斜杠必须加倍,以避免被当作转义序列的开始。
之所以存在此语法变体,主要是因为正则表达式模式的语法带有反斜杠(但不会在结尾处加重),但是上面的“ except”子句无关紧要,并且当你避免将它们每个加倍时看起来会更好一些- - 就这样。它也很流行来表示本机Windows文件路径(使用反斜杠代替其他平台上的常规斜杠),但这很少需要(因为普通斜杠在Windows上也可以正常工作)并且不完美(由于“ except”子句)以上)。
r’…’是一个字节串(在Python 2 *
),ur’…’是Unicode字符串(再次,在Python 2 *
),以及任何其他3种引用的也产生完全相同的类型字符串(因此,例如r'...'
,r'''...'''
,r"..."
,r"""..."""
都是字节字符串,依此类推)。
不确定你“ 返回 ”的意思-本质上没有前后方向,因为没有原始字符串类型,它只是一种表示完全正常的字符串对象,字节或Unicode的替代语法。
是的,在Python 2 *
,u'...'
是当然总是从刚不同'...'
-前者是一个unicode字符串,后者是一个字节的字符串。文字表达的编码方式可能是完全正交的问题。
例如,考虑一下(Python 2.6):
>>> sys.getsizeof('ciao')28
>>> sys.getsizeof(u'ciao')
34
Unicode对象当然会占用更多的存储空间(很短的字符串,很明显,;-差别很小)。
以上是 Python-“u”和“r”字符串标志具体做什么,什么是原始字符串文字? 的全部内容, 来源链接: utcz.com/qa/426153.html