Как объединить строки из файла, который я импортирую в Python? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть файл (nameOfTheFile.txt), содержащий следующие данные:

-200.0000   23.0786    0.2402    0.9807    2.7610    0.7627    0.3168    1.4249
    0.8745    0.4953    1.4652    5.9483    0.0000    0.6919    2.2648    0.3407
    0.0000    0.6958    0.5775    0.0000    0.6171    2.6211
 -199.9800   23.0706    0.2401    0.9804    2.7598    0.7632    0.3167    1.4246
    0.8743    0.4952    1.4646    5.9452    0.0000    0.6917    2.2638    0.3407
    0.0000    0.6955    0.5774    0.0000    0.6170    2.6203

Я импортирую данные в массив, который я хотел бы использовать позже. Однако, когда я делаю следующее

with open(os.path.join(sys.path[0], 'nameOfTheFile.txt'), 'r') as file:
    lines = file.readlines()
    tab = []
    for i in range(len(lines)):
            tab.append(lines[i])
    print(tab)

Я понял

['-200.0000   23.0786    0.2402    0.9807    2.7610    0.7627    0.3168    1.4249\n', '    0.8745    0.4953    1.4652    5.9483    0.0000    0.6919    2.2648    0.3407\n', '    0.0000    0.6958    0.5775    0.0000    0.6171    2.6211\n', ' -199.9800   23.0706    0.2401    0.9804    2.7598    0.7632    0.3167    1.4246\n', '    0.8743    0.4952    1.4646    5.9452    0.0000    0.6917    2.2638    0.3407\n', '    0.0000    0.6955    0.5774    0.0000    0.6170    2.6203\n']

Я знаю, как избавиться от \ n, но когда я это делаю, я все равно получаю такой вывод:

['-200.0000   23.0786    0.2402    0.9807    2.7610    0.7627    0.3168    1.4249', '    0.8745    0.4953    1.4652    5.9483    0.0000    0.6919    2.2648    0.3407', '    0.0000    0.6958    0.5775    0.0000    0.6171    2.6211', ' -199.9800   23.0706    0.2401    0.9804    2.7598    0.7632    0.3167    1.4246', '    0.8743    0.4952    1.4646    5.9452    0.0000    0.6917    2.2638    0.3407', '    0.0000    0.6955    0.5774    0.0000    0.6170    2.6203']

Все еще существует разделение между двумя строками в коме, что делает каждую строку nameOfTheFile.txt элементом массива. Поэтому, когда я хочу напечатать:

print(tab[0],tab[1])

Я получаю

-200.0000   23.0786    0.2402    0.9807    2.7610    0.7627    0.3168    1.4249     0.8745    0.4953    1.4652    5.9483    0.0000    0.6919    2.2648    0.3407

Мне бы хотелось, чтобы не каждая строка nameOfTheFile.txt рассматривалась как элемент, а каждое значение, которое я получал бы, применяя печать до:

-200.0000   23.0786

Есть ли способ сделать это, пожалуйста?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 24 апреля 2019

Похоже, вам нужно list.extend

Пример:

tab = []
with open(os.path.join(sys.path[0], 'nameOfTheFile.txt')) as infile:
    for line in infile:
        tab.extend(line.strip().split())  #Strip newline char and split by space. 
print(tab[0],tab[1])

Выход:

-200.0000 23.0786
0 голосов
/ 24 апреля 2019

Просто прочитайте весь файл и разделите его содержимое:

with open('nameOfTheFile.txt', 'r') as file:
    text = file.read()
    tab = text.split()

print(tab)
print(tab[0], tab[1])

Или используйте

tab = [float(i) for i in text.split()]

, если вам нужны числа вместо строк.

0 голосов
/ 24 апреля 2019

Ваш файл состоит из строк текста, но вы хотите цифры.Вы должны сделать это преобразование самостоятельно.

tab = []
with open(os.path.join(sys.path[0], 'nameOfTheFile.txt'), 'r') as file:
    for line in file:
            tab += [float(n) for n in line.strip().split()]
print(tab)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...