2016-12-15 4 views
0

У меня есть строковой переменной, котораяДобавить

temp = '1\2\3\4' 

Я хотел бы добавить префикс «г» в строку переменной и получить

r'1\2\3\4' 

так, что Я могу разбить строку на основе «\». Я пробовал следующее:

r'temp' 
'r' + temp 
r + temp 

Но ничего из вышеперечисленного не работает. Есть ли просто сделать это? Я использую Python 3. Я также пытался кодировать строку, используя

temp.encode('string-escape') 

Но он возвращает следующую ошибку

LookupError: unknown encoding: string-escape 
+1

Как создаются строки в первую очередь? Если вы делаете это в своем коде, просто добавьте 'r' себя в код? Если вы получаете ввод от пользователя, тогда пользователю необходимо ввести правильную строку в первую очередь. – SethMMorton

+0

Строка - это фактически местоположение файла, которое создается с помощью функции glob.iglob(). Я хотел бы получить весь файл txt в определенном файле, и я хотел бы извлечь имя этих файлов, разделив «\». –

+0

@SethMMorton, см. Мои комментарии выше. Спасибо за ваш ответ. –

ответ

1

r является префиксом для струнного литералов. Это означает, что r"1\2\3\4" не интерпретирует \ как побег при создании строкового значения, но сохраняет \ как фактический символ в строке. Таким образом, у r"1\2\3\4" будет семь символов.

У вас уже есть строковое значение: интерпретировать нечего. Вы не можете использовать префикс r для переменной, только для литерала.

Ваш temp = "1\2\3\4" будет интерпретировать обратную косую черту как escape-последовательности, создать строку '1\x02\x03\x04' (четырехсимвольная строка), а затем присвоить эту строку переменной temp. Невозможно ретроактивно переосмыслить исходный литерал.

EDIT: В связи с более поздними комментариями, похоже, у вас нет строки "1\2\3\4". Если у вас есть правильный путь, вы можете разделить его с помощью

path.split(r'\') 

или

path.split('\\') 

но вы, вероятно, также не нужно, что; скорее, вы можете разделить путь на каталог и имя файла, что лучше всего сделать с помощью os.path functions.

+0

Тогда как я могу разделить строковую переменную? Я хотел бы иметь такие результаты, как ['1', '2', '3', '4']. Я знаю, что могу делать с r'1 \ 2 \ 3 \ 4 ', но не' 1 \ 2 \ 3 \ 4 ' –

+0

Разделить нечего. '' 1 \ 2 \ 3 \ 4 "' не содержит символов '2',' 3' или '4'. – Amadan

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