Как заменить '\ 0' на '/ 0'?

Почему замена обратной косой черты на переднюю косую черту, как показано ниже, не работает для второй обратной косой черты ?:

x = 'O:\MAP\04_Operational Finance\Billing\Billings Reconciliation'.replace('\\', '/')
print(x)

Вывод на печать:

O:/MAP_Operational Finance/Billing/Billings Reconciliation

обратная косая черта, используемая в литералах, рассматривается как escape-символ. Кажется, \04 рассматривается как особый символ. попробуйте использовать "сырые" строки, в которых такого экранирования не происходит: x = r'...'

Felk 10.08.2018 15:08
1
1
96
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

'\04' - это строковый литерал, а escape-последовательность \04 в этом литерале уже означает представляет собой нечто иное, чем «обратная косая черта, четыре». Это escape-последовательность для записи байта x04 как части строки. Ваша строка никогда не содержала символов «обратная косая черта, четыре». Если вы хотите иметь обратную косую черту в строковых литералах без их интерпретации как escape-последовательности, вам необходимо их экранировать:

'O:\\MAP\\04_Operational Finance\\Billing\\Billings Reconciliation'

Или используйте необработанные литералы:

r'O:\MAP\04_Operational Finance\Billing\Billings Reconciliation'

Ваша строка должна использовать '\\', так как это не сырая строка, и необходимо экранировать обратную косую черту. \0 - это какой-то escape-символ, я полагаю

x = 'O:\\MAP\\04_Operational Finance\\Billing\\Billings Reconciliation'.replace('\\', '/')

Или вы можете префикс своей строки с помощью r: r'string', который обозначает необработанную строку, в которой вам не нужно избегать обратной косой черты.

Используйте r -> используя обратную косую черту в python (чтобы не убежать)

x = r'O:\MAP\04_Operational Finance\Billing\Billings Reconciliation'.replace('\\', '/')
print(x)
O:/MAP/04_Operational Finance/Billing/Billings Reconciliation

Другие вопросы по теме