Как префиксы u и r работают со строками в python?

Я знаю, что мы можем использовать флаги r (необработанная строка) и u (юникод) перед строкой, чтобы получить то, что нам действительно нужно. Однако мне интересно, как они работают со строками. Я пробовал это в IDLE:

a = r"This is raw string and \n will come as is"
print a
# "This is raw string and \n will come as is"
help(r)
# ..... Will get NameError
help(r"")
# Prints empty

Откуда Python знает, что он должен рассматривать r или u перед строкой как флаг? Или как строковые литералы, чтобы быть конкретным? Если я хочу узнать больше о строковых литералах и их ограничениях, как мне их изучить?


person thiruvenkadam    schedule 04.10.2016    source источник


Ответы (1)


Префиксы u и r являются частью строкового литерала, как определено в грамматике Python. Когда интерпретатор Python анализирует текстовую команду, чтобы понять, что она делает, он читает r"foo" как один строковый литерал со значением "foo". С другой стороны, он читает b"foo" как однобайтовый литерал с эквивалентным значением.

Для получения дополнительной информации вы можете обратиться к разделу литералов в документации по Python. Кроме того, в python есть модуль ast, который позволяет вам исследовать, как python анализирует команды.

person Or East    schedule 04.10.2016