在python字符串的前面调用了哪些“修饰符”?我不明白这些是用来做什么的。此外,由于我不知道他们叫什么,我不知道要搜索什么来了解他们(或者其他可能有的话)。
在这个例子中,“u”在返回的字符串前面表示什么?
def __unicode__(self):
return u'title: %s, text: %s, created:%s, tags: %s' % (self.title, self.text, self.created, self.tags)
在这个django URL示例中,“r”代表什么?
urlpatterns = patterns('',
(r'^admin/',include(admin.site.urls)),
)
我正在学习python和django,我在示例中看到了这些,但没有解释它们代表什么。
答案 0 :(得分:13)
'r'表示原始字符串,它改变了转义行为。这对于正则表达式非常有用,可以使它们更易于阅读。 'u'表示它是Unicode字符串。它们被称为 string literal prefixes 。
来自文档:
字符串文字可以选择以字母“r”或“R”为前缀;这些字符串称为原始字符串,并使用不同的规则来解释反斜杠转义序列。前缀“u”或“U”使字符串成为Unicode字符串。 Unicode字符串使用Unicode Consortium和ISO 10646定义的Unicode字符集。下面描述的一些其他转义序列在Unicode字符串中可用。 Python 2中忽略前缀'b'或'B';它表示文字应该成为Python 3中的字节文字(例如,当代码自动转换为2to3时)。 “u”或“b”前缀后面可以跟一个“r”前缀。
除非存在'r'或'R'前缀,否则字符串中的转义序列将根据与标准C使用的规则类似的规则进行解释。
答案 1 :(得分:3)
这些在Python 2和Python 3之间有所不同:
Python 2:
"hello" # Normal string (8-bit characters)
u"hello" # Unicode string
r"hello" # Raw string --> Backslashes don't need to be escaped
b"hello" # treated like normal string, to ease transition from 2 to 3
Python 3:
"hello" # Unicode string
b"hello" # Bytes object. Not a string!
r"hello" # Raw string --> Backslashes don't need to be escaped
u"hello" # Python 3.3, treated like Unicode string, to ease transition from 2 to 3
答案 2 :(得分:1)
这些被称为字符串文字:http://docs.python.org/reference/lexical_analysis.html#string-literals
例如,r''是原始的,不会有相同的转义
答案 3 :(得分:-3)
使用文档,Luke:http://docs.python.org/reference/lexical_analysis.html#string-literals
u = Unicode字符串(每个项目代表一个unicode代码点)
r =原始字符串(转义只是一个普通的字符序列,对正则表达式很有用)
b / no prefix = byte string(每个项目都是一个字节)。请注意,在python 3中,没有前缀表示unicode字符串。