Замена двойного бэкслэша в пути файла в переменной Python

получил путь в переменную nfile = event.src_path Путь получися вида 'C:\\Work\\export\\121.txt'

Нужно заменить \\ на \

nfile = nfile.replace('\\','\') не помогло.

ОС - Windows10

Пока заработало через такой код:

    path = r"C:\work\export\\"
    nfile = event.src_path
    fname = str(nfile).split('\\')[-1:][0]
    fullname = path + fname
    with open(fullname) as file:
        rline = file.read()

Но мне кажется это через ... Подскажите как правильнее оформить данный момент


Ответы (2 шт):

Автор решения: cceniam

Не знаю что у тебя не получилось.
у меня всё получилось
OC - xubuntu
IDLE - PyCharm PythonConsole
python - 3.7

nfile.replace('\\', '/')
→ Ссылка
Автор решения: insolor

Не нужно ничего менять: каждый удвоенный обратный слеш внутри кавычек - это по факту один символ. Убедиться в этом можно, если вывести строку через print:

print('C:\\Work\\export\\121.txt')  # Выведет C:\Work\export\121.txt

Удвоение внутри строк нужно из-за того, что некоторые сочетания со слешем внутри строки имеют специальное значение, например '\n' (перенос строки), '\r' ("возврат каретки", т.е. сдвиг курсора на начало строки), '\b' ("забой", он же backspace - сдвиг курсора на один символ влево) и т.д. Чтобы отличить, например, два отдельных символа - обратный слеш и букву n, от одного символа переноса строки нужно удвоить обратный слеш, т.е. '\n' - один символ, а '\\n' - два символа.

Если использовать r-строки, то удваивать обратный слеш внутри кавычек не нужно. Фактически две строки ниже равны между собой:

>>> 'C:\\Work\\export\\121.txt' == r'C:\Work\export\121.txt'                    
True
→ Ссылка