2012-03-21 2 views
4

Что представляют собой эти «модификаторы», называемые фронтом строки python? Я не понимаю, для чего они используются. Кроме того, поскольку я не знаю, что они называются, я не знаю, что искать, чтобы узнать о них (или других, которые могут быть доступны, если таковые имеются).Python String «Модификаторы»

В этом примере, что означает «u» на передней части строки в обратном?

def __unicode__(self): 
     return u'title: %s, text: %s, created:%s, tags: %s' % (self.title, self.text, self.created, self.tags) 

В этом примере URL-адреса django, что представляет собой символ «r»?

urlpatterns = patterns('', 
    (r'^admin/',include(admin.site.urls)), 
) 

Я учусь питона и Джанго, и я вижу их в примерах, но не объяснение того, что они представляют.

ответ

13

«r» указывает на необработанную строку, которая изменяет поведение экранирования. Это полезно для регулярных выражений, чтобы облегчить их чтение. «U» указывает, что это строка Unicode. Их называют string literal prefixes.

Из документов:

строковые литералы необязательно может быть префиксом с буквой 'R' или 'R'; такие строки называются необработанными строками и используют разные правила для интерпретации escape-последовательностей обратного слэша. Префикс 'u' или 'U' делает строку строкой Unicode. Строки Unicode используют набор символов Unicode, определенный Консорциумом Unicode и ISO 10646. Некоторые строки escape-последовательностей, описанные ниже, доступны в строках Unicode. Префикс «b» или «B» игнорируется в Python 2; это означает, что литерал должен быть литералом байтов в Python 3 (например, когда код автоматически преобразуется с 2to3). Префикс 'u' или 'b' может сопровождаться префиксом 'r'.

Если в «R» или префикс «R» присутствует, не управляющие последовательности в строках интерпретируются в соответствии с правилами, аналогичных тем, которые используются Standard C.

+1

я установил его уже –

+0

'r' есть * полезно * для записи регулярные выражения, но это означает «сырые» - последовательности escape-последовательности, которые не интерпретируются. –

+0

Проголосовали за то, что нет отношения RTFM или ссылок.^ 5 –

1

Те, которые называются строковых литералов: http://docs.python.org/reference/lexical_analysis.html#string-literals

Пример, г» 'является сырым и не будет иметь тот же избежать

+0

Ответы, которые являются просто ссылками, не рекомендуется. – Marcin

+0

Вы действительно отказали мне в ссылке на точные документы, подробно объясняющие вопрос, который он задал? Я очень сомневаюсь, что повторение или полное цитирование документов здесь поощряется путем ссылки на них с ответом на вопрос и пример. –

+0

о, это было так, что вы могли использовать мою самую ссылку и попытаться получить согласие? Классный. –

-3

используйте документы, Люк: http://docs.python.org/reference/lexical_analysis.html#string-literals

и = строка Unicode (каждый элемент магнезии не точка х подарков Юникода кода)

г = сырые строки (побеги являются просто обычной последовательностью символов, полезна для регулярных выражений)

б/без префикса = байты строка (каждый элемент является байтами). Обратите внимание, что в python 3 префикс не означает строку unicode.

+0

Downvoters: Объясните сами. – Marcin

+6

Я думаю, что это снисхождение в первом предложении. Вы в основном говорите: «RTFM», когда плакат сказал, что они не могут найти информацию, потому что они не знали, как это называется. –

+0

@JohnSheehan Возможно. Использование не могло не найти эту информацию, потому что он «не знал, как ее зовут» - он не смог ее найти, потому что он не удосужился прочитать стандартную документацию для используемого им языка. – Marcin

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 
Смежные вопросы