Положить обратные слеши в строку - PullRequest
0 голосов
/ 14 сентября 2018

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

List of the best combinations (with |r-value| > 0.5)
Combination &   r value &   no.obs. &   Kendall's tau
============================================================
B - V   &   0.580019    &   11863   &   1.000000
B - R   &   0.574867    &   11863   &   1.000000
V - B   &   -0.580019   &   11863   &   1.000000
R - B   &   -0.574867   &   11863   &   1.000000

Highest r-value of 0.580019 occurred for B - V
Lowest r-value of -0.580019 occurred for V - B

Мне нужно преобразовать это в таблицу в моем документе LaTex, поэтому его нужно отформатировать следующим образом:

List of the best combinations (with |r-value| > 0.5)\\
\hline
Combination &   r value &   no.obs. &   Kendall's tau\\
============================================================\\
B - V   &   0.580019    &   11863   &   1.000000\\
\hline
B - R   &   0.574867    &   11863   &   1.000000\\
\hline
V - B   &   -0.580019   &   11863   &   1.000000\\
\hline
R - B   &   -0.574867   &   11863   &   1.000000\\
\hline

Highest r-value of 0.580019 occurred for B - V\\
Lowest r-value of -0.580019 occurred for V - B\\

реальные файлы будут иметь длину в десятки строк, поэтому будет нецелесообразно делать это вручную.

Я пробовал

filename = file+'.txt'
with open(filename, 'r') as infile:
    new_filename = file+'_table.txt'
    with open(new_filename, 'w') as outfile:
        lines = infile.readlines()
        for line in lines:
            end_of_line = r'\\'
            outfile.write(line + end_of_line)
            outfile.write(r'\\hline')

, а также предложения здесь , но мой вывод

\List of the best combinations (with |r-value| > 0.5)
\Combination    &   r value &   no.obs. &   Kendall's tau
\============================================================
\B - V  &   0.580019    &   11863   &   1.000000
\B - R  &   0.574867    &   11863   &   1.000000
\V - B  &   -0.580019   &   11863   &   1.000000
\R - B  &   -0.574867   &   11863   &   1.000000
\
\Highest r-value of 0.580019 occurred for B - V
\Lowest r-value of -0.580019 occurred for V - B
\
\

Как я могу вставить \\ и \hline в дословный перевод outfile?Или есть какой-нибудь другой инструмент, который я мог бы использовать для преобразования в форматирование LaTex?

Ответы [ 2 ]

0 голосов
/ 17 сентября 2018

В итоге исправили это так:

with open(filename, 'r') as infile:
        new_filename = file+'_table.txt'
        with open(new_filename, 'w') as outfile:
            lines = infile.readlines()
            outfile.write(r'\begin{tabular}{|c|c|c|c|}')
            for line in lines[1:-3]:
                if line.startswith('='):
                    pass
                else:
                    line = line.replace('\n', ' '+r'\\'+'\n')
                    outfile.write(line)
                    outfile.write(r'\hline' + '\n')
            outfile.write(r'\end{tabular}')

для работы с данными моего файла.

0 голосов
/ 14 сентября 2018

В .txt файле на самом деле есть \n в конце предложения!чтобы добавить что-то в конец предложения, мы должны быть осторожны с этим.

Я думаю, что вы можете добавить еще одну строку в "для строки в строках", чтобы решить это! line = line.replace("\n", " ") end_of_line = r'\\' ... и следуйте

, если вы хотите создать еще одну строку, просто используйте: outfile.write('\n') outfile.write(r'\hline') outfile.write('\n')

Помогу, это может быть полезно для вас.

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