2013-11-24 3 views
0

фона:печать или запись в файл " 040" (пробел) в питоне

Мне нужно написать следующую строку в fstab файл с помощью Python

//10.1.1.1//First\040Second /Mount cifs ------ 

Проблема:

Но это First Second исходит от ввода, и когда я пытаюсь преобразовать его в First\040Second, он печатает то же, что и First Second.

Вопрос:

Как я могу конвертировать First Second в First\040Second, просто заменить " " в \040?

Примечание: Даже когда я пытаюсь напечатать First\040Second, оно отображается только как First Second.

print "First Second".replace(" ", "\040") 

Заранее спасибо, Если вам нужно уточнить, я могу предоставить.

+0

Вы уверены, что это то, что вы хотите делать? '\ 0' означает что-то. –

+0

Да, он работает (я имею в виду монтировать самба-привод правильно). Но все же у меня нет хорошего представления о '\ 0'. – user3027118

ответ

3

Изменить

print "First Second".replace(" ", "\040") 

в

print "First Second".replace(" ", "\\040") 

\\ правильный способ напечатать обратную косую черту

http://en.wikipedia.org/wiki/Null_character

EDIT: Starrify подсветкой меня и в основном говорит, что \ ххх или \ 040 рассматривали как гексидеци mal

+0

"\ 0 является нулевым символом" есть ли что-либо связанное с '\ 0'? – starrify

+0

@ starrify, я едва понимаю, как работает python. Это слишком сложно для меня. Все, что я знаю, это то, что \ 0 был классическим способом завершения строки из c – user1462442

+1

@ user1462442 Ну, я хочу сказать, что '\ 0' не имеет ничего общего с этим случаем.Поскольку OP пишет '' \ 040'', это один символ, значение ASCII которого равно 40 в базе 8, а не символ '' \ 0'' и два символа ''40' '. Также существуют escape-последовательности для базы 16, такие как '' \ xAB'', где AB - шестнадцатеричное число. Это правило экранирования используется как в C, так и в Python. – starrify

0

Во-первых, в Python " " == "\040" всегда True, поскольку последний является еще одной формой выражения символов в строке.

Как я понимаю, вы хотите, чтобы напечатать визуально ускользающей для символов, то, пожалуйста, используйте "First Second".replace(" ", "\\040"), где "\\040" может быть также заменен r"\040", как «г» здесь означает, что в Python raw string literals.

+0

спасибо за объяснение, и он работает – user3027118

0

Побег последовательности путем добавления \ перед тем \040: First\\040Second

0

Вы можете предварить строку с r, чтобы обозначить, что это сырье строка:

>>> s = r'First\040Secon' 
>>> print s 
First\040Secon 
>>> s 
'First\\040Secon' 
Смежные вопросы