Разбор escape-символа в Python 3.x - PullRequest
2 голосов
/ 13 июня 2019

У меня есть

path = "/Users/xx/datasets/yyy/DefinedTS\Training\00000"

Я просто хочу заменить управляющий символ '\' на '/'.Я попытался:

path.replace("/","\")

Но я получил ошибку: EOL при сканировании строкового литерала

Я также пробовал регулярное выражение, писать свою собственную функцию, пытаясь преобразовать в ascii и заменить, но всекажется, отражает ту же проблему.

РЕДАКТИРОВАТЬ: я имел в виду, что я пытался

path.replace("\","/")

Спасибо UncleZeiv за указание на это.

Ответы [ 3 ]

1 голос
/ 13 июня 2019

Есть ряд проблем:

  • Синтаксис вашей строки path.replace неверен. \ является escape-символом, поэтому его необходимо экранировать, добавив еще один \.
  • path.replace работает наоборот: сначала то, что вы хотите заменить, затем то, что вы хотите заменить.
  • Ваша строка больше не содержит всех обратных косых черт, потому что они были интерпретированы как ... escape-символы. Вам необходимо создать «сырую» строку.

Собираем все вместе:

path = r"/Users/xx/datasets/yyy/DefinedTS\Training\00000"
path = path.replace("\\", "/")
print(path)
1 голос
/ 13 июня 2019

Поскольку \ является специальным символом, его необходимо экранировать другим \

path = path.replace("/","\\")

0 голосов
/ 13 июня 2019

[Изменено]

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

path = r"/Users/xx/datasets/yyy/DefinedTS\Training\00000"
path = path.replace("/","\\")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...