Как вставить символы в определенных местах в текстовом файле - PullRequest
0 голосов
/ 21 января 2020

Отказ от ответственности: у меня незначительные знания Python.

На лабораторных занятиях в колледже много данных собирается во время экспериментов, и мне необходимо вставить их в таблицу и его график в файле латекса, данные записываются в Excel, я копирую их оттуда и сохраняю в файле .txt, который выглядит следующим образом:

4.86    0.23
4.83    0.27
4.78    0.39
4.66    0.66
4.5 1.02
4.4 1.23
4.25    1.52
4.11    1.78
3.99    2
3.81    2.29
3.57    2.64
3.45    2.79
3.43    2.82

Соответствующая часть в коде латекса:

\begin{longtable}{|c | c |} 
\hline
$V_{out}$(in V) &   $I_{out}$(in mA) \\ \hline
4.86 &  0.23\\  \hline
4.83&   0.27\\ \hline
4.78&   0.39\\ \hline 
4.66&   0.66\\ \hline
4.5 &1.02\\ \hline
4.4 &1.23\\ \hline
4.25&   1.52\\ \hline
4.11&   1.78\\ \hline
3.99&   2\\ \hline
3.81&   2.29\\ \hline
3.57&   2.64\\ \hline
3.45&   2.79\\ \hline
3.43&   2.82\\ \hline
\caption{\\Output Characteristics for low input} 
\label{tab:output@low}
\end{longtable}

поэтому в каждой строке моего файла .txt мне нужно вручную вставлять & и \\ \ hline в каждую строку, однако, поскольку таких файлов данных много, этот ручной процесс тратит огромное время, Может кто-нибудь предложить код python, который будет читать текстовый файл, вставлять необходимые символы и возвращать его мне?

Ответы [ 2 ]

1 голос
/ 21 января 2020
import io

# watch the `r` in header, footer & adding to raw_data lines, `r` is raw, it's meant to take strings as is
header= r'''\begin{longtable}{|c | c |} 
\hline
$V_{out}$(in V) &   $I_{out}$(in mA) \\ \hline'''

footer = r'''\caption{\\Output Characteristics for low input} 
\label{tab:output@low}
\end{longtable}'''


with open('raw_data.txt', encoding='utf8') as raw_data, open('result.txt', 'w', encoding='utf8') as result:
    result.write(header)

    for line in raw_data.readlines():
        datapoint1, datapoint2 = line.split()
        result.write(datapoint1 + '& ' + datapoint2 + r'\\  \hline' + '\n')

    result.write(footer)

1 голос
/ 21 января 2020

Допустим, у вас есть data.txt со всеми результатами ваших экспериментов:

4.86    0.23
4.83    0.27
4.78    0.39
4.66    0.66
4.5 1.02
4.4 1.23
4.25    1.52
4.11    1.78
3.99    2
3.81    2.29
3.57    2.64
3.45    2.79
3.43    2.82

Вы можете прочитать его и построить выходной файл построчно:

with open('data.txt', 'r') as f:
    lines = f.readlines()

result = '''\begin{longtable}{|c | c |} 
\hline
$V_{out}$(in V) &   $I_{out}$(in mA) \\ \hline
'''

for line in lines:
    val1, val2, = line.split()
    result += f'{val1}&{val2}\\\\ \hline\n'

result += '''\caption{\\Output Characteristics for low input} 
\label{tab:output@low}
\end{longtable}'''

with open('result.txt', 'w') as f:
    f.write(result)

Выходной файл содержит :

egin{longtable}{|c | c |} 
\hline
$V_{out}$(in V) &   $I_{out}$(in mA) \ \hline
4.86&0.23\\ \hline
4.83&0.27\\ \hline
4.78&0.39\\ \hline
4.66&0.66\\ \hline
4.5&1.02\\ \hline
4.4&1.23\\ \hline
4.25&1.52\\ \hline
4.11&1.78\\ \hline
3.99&2\\ \hline
3.81&2.29\\ \hline
3.57&2.64\\ \hline
3.45&2.79\\ \hline
3.43&2.82\\ \hline
\caption{\Output Characteristics for low input} 
\label{tab:output@low}
\end{longtable}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...