Необходимо извлечь табличные данные из текстового файла в Python3

Проблема:

b=1; c=0; a=b/c; // Error Divide by zero

Решение простое:

if(c!=0) a=b/c;
else // error handling
0
задан Wai Ha Lee 16 January 2019 в 19:47
поделиться

3 ответа

Я бы использовал readlines и split.

cc = 'CARTESIAN_COORDINATES.txt'

with open(cc) as data:
    lines = data.readlines()[2:] # skip first two lines
    for line in lines:
        ls = line.split()
        a, b, c, d, e = int(ls[0]), ls[1], float(ls[2]), float(ls[3]), float(ls[4])
        print(a, b, c, d, e)

Вывод:

1 C 0.011987266 -0.003842185 0.006578784
2 H 1.097152909 -0.003956163 0.01333931
3 H -0.349612312 1.019316731 0.001903075
4 H -0.344276148 -0.517463019 -0.880495291
5 H -0.355315644 -0.513266496 0.891567896
0
ответ дан rapelpy 16 January 2019 в 19:47
поделиться

Предлагаю вам заглянуть в np.genfromtxt . Следующий фрагмент кода будет читать данные примера из вашего вопроса, хранящиеся в файле с именем data.txt.

import numpy as np
data = np.genfromtxt('data.txt', skip_header=2, dtype=[('id', 'i8'),('label','S1'),('x','f8'),('y','f8'),('z','f8')])
print(data)

Выход

 [(1, b'C',  0.01198727, -0.00384219,  0.00657878)
 (2, b'H',  1.09715291, -0.00395616,  0.01333931)
 (3, b'H', -0.34961231,  1.01931673,  0.00190307)
 (4, b'H', -0.34427615, -0.51746302, -0.88049529)
 (5, b'H', -0.35531564, -0.5132665 ,  0.8915679 )]
0
ответ дан Hami 16 January 2019 в 19:47
поделиться

Regex построен для извлечения данных из данных - если ваши таблицы всегда хорошо определены, вы можете извлечь их, используя fe: https://regex101.com/r/QUT2o3/2

[110 ]

Применить регулярное выражение:

matches = re.findall(regex, test_str, re.MULTILINE | re.DOTALL)
for m in matches:
    print('\n'.join(x.strip() for x in m.splitlines()))

Вывод:

1    C        0.011987266    -0.003842185     0.006578784
2    H        1.097152909    -0.003956163     0.013339310
3    H       -0.349612312     1.019316731     0.001903075
4    H       -0.344276148    -0.517463019    -0.880495291
5    H       -0.355315644    -0.513266496     0.891567896

1    C        0.011987266    -0.003842185     0.006578784
2    H        1.097152909    -0.003956163     0.013339310
3    H       -0.349612312     1.019316731     0.001903075
4    H       -0.344276148    -0.517463019    -0.880495291
5    H       -0.355315644    -0.513266496     0.891567896

1    C        0.011987266    -0.003842185     0.006578784
2    H        1.097152909    -0.003956163     0.013339310
3    H       -0.349612312     1.019316731     0.001903075
4    H       -0.344276148    -0.517463019    -0.880495291
5    H       -0.355315644    -0.513266496     0.891567896
0
ответ дан Patrick Artner 16 January 2019 в 19:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: