Как вы пишете специальные символы ("\ n", "\ b", ...) в файл в Python? - PullRequest
2 голосов
/ 22 ноября 2010

Я использую Python для обработки простого текста в LaTeX, поэтому мне нужно иметь возможность записывать в файл такие вещи, как \begin{enumerate} или \newcommand.Когда Python записывает это в файл, он интерпретирует \b и \n как специальные символы.

Как заставить Python записать \newcommand в файл вместо записи ewcommand в новой строке?

Код выглядит примерно так ...

with open(fileout,'w',encoding='utf-8') as fout:
    fout.write("\begin{enumerate}[1.]\n")

Python 3, Mac OS 10.5 PPC

Ответы [ 3 ]

9 голосов
/ 22 ноября 2010

Одним из решений является экранирование escape-символа (\). Это приведет к буквальному обратному слешу перед символом b вместо экранирования b:

with open(fileout,'w',encoding='utf-8') as fout:
    fout.write("\\begin{enumerate}[1.]\n")

Это будет записано в файл как

\begin{enumerate}[1.]<newline>

(Я предполагаю, что \n в конце является преднамеренным переводом строки. Если нет, используйте здесь также двойное экранирование: \\n.)

8 голосов
/ 22 ноября 2010

Вам просто нужно удвоить обратную косую черту: \\n, \\b. Это избежит обратной косой черты. Вы также можете поставить префикс r перед строкой: r'\begin'. Как указано здесь , это предотвратит замены.

3 голосов
/ 22 ноября 2010

Вы также можете использовать необработанные строки:

with open(fileout,'w',encoding='utf-8') as fout:
    fout.write(r"\begin{enumerate}[1.]\n")

Обратите внимание на 'r' до \ начала

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...