2012-04-19 2 views
2

Это, вероятно, где-то было где-то, но названия, которые я видел, не подключаются, так что вот оно. Я видел команды python, которые читают os.listdir(r".\bootstrapper"). Что делает 'r'?'r' в командах Python

Cheers ...

ответ

3

r следы сырья ввод. Это означает, что обычные escape-символы в строке игнорируются (например, \)

2

Это необработанная строка, которая удаляет особый характер обратной косой черты.

Reference.

+0

Хорошая идея для ссылки - но вы связаны с модулем 're', а не с документацией о [строковых литералах (включая необработанные строки)] (http://docs.python.org/reference/lexical_analysis.html # строка-литералы). –

+0

@benhoyt Исправлено; веселит. – trojanfoe

1

Это делает его необработанной струной. Другими словами, обратная косая черта будет сохранена. '\n' интерпретируется как новая строка, но r'\n' интерпретируется как буквальные символы '\' и 'n'.

Также обратите внимание, что иногда вы увидите u'string', если вы используете код python2.x. Это означает, что строка должна интерпретироваться как строка юникода. (в python 3.x все строки интерпретируются как unicode)

+0

Python 3.3 позволит индикатору unicode 'u' (http://www.python.org/dev/peps/pep-0414/), что делает меньше поводов для беспокойства при переносе от 2 до 3. –

+0

@StevenRumbalski Хорошо Знаю, спасибо. – mgilson

6

не позволяет интерпретатору Python присоединять какие-либо специальные значения к специальным символам в строке (например, обратную косую черту) и просто интерпретировать их как есть (т. е. в его «сырой» форме). Это один из способов «избежать» специальных символов в используемых вами строках.

Вы часто увидите исходные строки в спецификациях пути. Предположим, что путь содержит каталог, начинающийся с t, например, c:\tests\data.csv, поэтому вы не хотите, чтобы \t интерпретировался как вкладка, поэтому используйте модификатор r.

+0

Немного nitpicky, но обратите внимание, что Python не придаёт особое значение * string *, а обратным косам (escape-последовательностям) внутри строкового литерала. –

+0

@benhoyt Итак, я уточню свое объяснение, чтобы быть более точным - спасибо – Levon

+0

@ user466740 Просто дружеское примечание, если это решит вашу проблему, пожалуйста, рассмотрите [** принятие этого ответ **] (http: // meta .stackexchange.com/questions/5234/how-do-accepting-a-answer-work/5235 # 5235) , щелкнув галочку рядом с моим ответом. Это будет означать, что проблема решена, и вознаградите нас обоих некоторыми точками репутации - спасибо. – Levon

1

r означает raw input. Если строка помечена как r, тогда значение любого специального символа в строке будет проигнорировано, наиболее частой ситуацией будет backslash.

Смежные вопросы