Удаление escape-символов при чтении файла python

У меня есть файл LaTeX, который я хочу отобразить в поле формы. Входной файл:

...
\begin{center}
    \vspace{-5mm}
    \noindent
    \textbf{\large Thank You! for Using}
\end{center}
...

Я прочитал это на питоне, используя readlines()

'\\begin{center}' '\n'

... и так далее.

Я хочу, чтобы escape-символы ‹ no '\n' '\'' '\t' и т. д.> были удалены, чтобы прочитанное содержимое можно было поместить в поле формы. Как это сделать?


person sandish    schedule 04.01.2013    source источник
comment
возможный дубликат stackoverflow.com/questions/8115261/   -  person Babu    schedule 04.01.2013


Ответы (2)


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

$> a = 'xyz\nbcd'
$> b = a.replace('\n','') # b would be 'xyzbcd'
person Nik    schedule 04.01.2013
comment
Мне нужно что-то, чтобы удалить все escapes вообще, просто заменить не работает для меня. Есть ли какой-нибудь пакет, функция или что-то подобное? - person sandish; 04.01.2013
comment
@sandish Вы проверили мой комментарий к вопросу? - person Babu; 04.01.2013
comment
ага Бабу, я прочитал это. Спасибо, и у меня сработало простое использование read() вместо readlines(). - person sandish; 04.01.2013

Я не совсем уверен, действительно ли вы хотите удалить все экранированные символы только завершающего \n в конце каждой строки. Это распространенная проблема, с которой сталкиваются многие программисты на Python при первом чтении файлов, у меня тоже была такая проблема некоторое время назад.

readlines() сохраняет конечный \n, так что простой "".join(lines) восстановит исходное содержимое файла.

Просто удалите завершающие \n из каждой строки.

# -*- coding: utf-8 -*-
"""
Sample for readlines and trailing newline characters
"""
import sys

lines1 = []
fh = open(sys.argv[0],"r")
for line in fh.readlines():
    print line
    lines1.append(line)
fh.close()

lines2 = []
fh = open(sys.argv[0],"r")
for line in fh:
    line = line.rstrip()
    print line
    lines2.append(line)
fh.close()

Результат будет

# -*- coding: utf-8 -*-

"""

Sample for readlines and trailing newline characters

"""

import sys



lines1 = []

fh = open(sys.argv[0],"r")

for line in fh.readlines():

    print line

    lines1.append(line)

fh.close()



lines2 = []

fh = open(sys.argv[0],"r")

for line in fh:

    line = line.rstrip("\n")

    print line

    lines2.append(line)

fh.close()


# -*- coding: utf-8 -*-
"""
Sample for readlines and trailing newline characters
"""
import sys

lines1 = []
fh = open(sys.argv[0],"r")
for line in fh.readlines():
    print line
    lines1.append(line)
fh.close()

lines2 = []
fh = open(sys.argv[0],"r")
for line in fh:
    line = line.rstrip("\n")
    print line
    lines2.append(line)
fh.close()

Вы также можете написать line.rstrip("\n"), чтобы явно удалить только символы новой строки, а не все пробельные символы.

person Thorsten Kranz    schedule 04.01.2013