Написание текстового файла в новом формате - PullRequest
0 голосов
/ 27 июня 2018

У меня есть такой текстовый файл:

   1 0.1278000E-01  0.000000      0.000000         
 259 0.1172645E-01-0.5057909E-02  0.000000         
 260 0.7262609E-02-0.1052830E-01  0.000000

Имеет 4 столбца и 3 строки. Числа в последнем столбце всегда равны нулю. Если число в третьем столбце не равно нулю (строка 2,3), это число присоединяется к числу во втором столбце. Я хочу добавить что-то в этот файл и изменить его формат на:

Point(1) = {0.1174800E-01, 0, 0};

Point(259) = {0.1172645E-01, -0.5057909E-02, 0};

Point(260) = {0.7262609E-02, -0.1052830E-01, 0};

Кто-нибудь знает, как я могу это сделать?

Спасибо!

1 Ответ

0 голосов
/ 27 июня 2018

Решение этой проблемы в Python 3.6:

lines = [line.rstrip('\n') for line in open('input.txt')]
output = open('output.txt', 'w')

for line in lines:
    line = line.split()
    if len(line) == 3:
         line[1], line[2] = line[1][:line[1].find("E") + 4], 
                                    line[1][line[1].find("E") + 4:]
    output.write('Point({}) = {{{}, {}, 0}};\n'.format(line[0], line[1], line[2] 
                                                        if float(line[2]) != 0 else '0'))

output.close()

РЕДАКТИРОВАТЬ: Теперь это немного жестко, поскольку значения не разделены пробелами, но работает нормально. Я думаю, что вы могли бы улучшить это с помощью регулярных выражений, я посмотрю.

...