Как я могу прочитать определенные столбцы в файле .dat без заголовка, а затем сохранить в списке для преобразования прямого восхождения и децилляции

Вот как выглядит файл .dat, когда я открываю его в возвышенном редакторе. Как я могу прочитать определенные столбцы в этом «файле .dat» без заголовка, а затем сохранить эти значения столбцов, разделенные запятыми, в списке?

   01 04 16 57 15 30 00 119.8 -24.5 38.5
   02 04 20 03 17 25 00 112.2 -29.1 38.4
   03 04 25 42 19 04 00 113.5 -37.2 38.6
   04 05 00 06 21 31 00  70.6 -41.4 42.2
   05 02 55 13 20 28 00 248.8 -29.8 28.5
   06 03 50 18 17 10 00 148.5 -29.8 35.0
   07 04 31 00 14 44 00 106.4 -26.1 37.5
   08 04 48 27 18 45 00  84.3 -34.5 38.5
   09 04 15 25 21 27 00 101.4 -36.6 35.4
   10 04 23 19 22 42 00 116.2 -45.8 35.1
   11 04 26 02 12 56 00 107.4 -15.6 33.4
   12 03 56 56 10 11 00 141.9  -6.2 39.6
   13 04 12 56 15 16 00 117.4 -24.5 36.9
   14 04 17 09 13 54 00 121.6 -18.2 42.0
   15 04 17 46 14 58 00 113.1 -20.2 36.2
   16 04 18 04 13 44 00 109.2 -20.7 37.0
   17 04 21 13 17 19 00 113.4 -31.8 37.5
   18 04 22 02 18 55 00 112.5 -34.5 36.6
   19 04 22 23 22 10 00 113.5 -40.7 40.1
   20 04 22 26 22 05 00 119.7 -44.2 32.0
   21 04 22 36 17 48 00 115.8 -36.4 34.7
   22 04 22 46 15 49 00 105.0 -25.3 36.4
   23 04 25 02 21 30 00 105.9 -41.3 36.2
   24 04 25 43 15 51 00 109.6 -29.3 40.0
   25 04 25 48 15 45 00 111.7 -25.5 39.5
   26 04 27 42 16 05 00 109.2 -23.9 37.5
   27 04 27 48 15 35 00 107.2 -24.7 39.3
   28 04 27 48 13 37 00 113.5 -19.3 38.8
   29 04 29 00 15 44 00 107.5 -29.5 36.0
   30 04 34 41 15 02 00 109.5 -29.2 40.2
   31 04 35 17 15 56 00  93.4 -28.6 38.4
   32 04 35 51 23 03 00 111.3 -57.8 40.0
   33 04 41 39 11 03 00  98.4 -11.9 39.4
   34 04 56 52 15 50 00  87.6 -32.2 44.1

Позже я хочу использовать этот список для преобразования прямого восхождения и склонения из hour, minutes, seconds и, соответственно, degree minutes и так далее... в degree decimals для дальнейших вычислений.

Я пытался по-другому через онлайн-помощь, но я не могу пойти дальше.
Любая помощь будет оценена по достоинству. Я совсем новичок.


person FRQ    schedule 12.11.2018    source источник
comment
мне это не поможет в моем случае   -  person FRQ    schedule 12.11.2018


Ответы (2)


Попробуй это

with open("data.dat",'r') as file:
      text = [x for x in file.read().split("\n")]
      file.close()
print(text[0:2])
person PZ_R    schedule 12.11.2018
comment
а затем вы можете получить доступ к списку, как вам нравится - person PZ_R; 12.11.2018
comment
Вы могли бы просто сделать text = [line for line in file.readlines()] вместо этого... или еще лучше, text = [file.readline() for _ in range(2)] вместо text[0:2]. Вам также не нужен file.close(), так как менеджер контекста with сделает это за вас, когда вы выйдете из блока. Однако я не думаю, что ваш ответ помогает OP. - person r.ook; 12.11.2018
comment
Ваш первый код дает мне следующий результат: [' 01 04 16 57 15 30 00 119,8 -24,5 38,5', ' 02 04 20 03 17 25 00 11 2,2 -29,1 38,4'] но как насчет одинарной кавычки и пробела в начале? - person FRQ; 12.11.2018
comment
используйте полосу для удаления пробела, и это список, вы можете получить доступ к любому элементу, передав номер индекса. это то, что вам нужно? - person PZ_R; 12.11.2018
comment
что будет вместо x в цикле for или что такое x в цикле for... это индекс? плюс я хочу, например, 2-й, 3-й и четвертый столбцы в одном списке и аналогично 5-й и 6-й в другом списке ... чтобы я мог преобразовать этот список для своих углов. - person FRQ; 12.11.2018
comment
x - это заполнитель/переменная, которая получает вывод читаемого файла. Прочитайте понимание списка, чтобы играть с данными. - person PZ_R; 12.11.2018

используйте pandas read_csv, но укажите разделитель как пробел. Затем укажите имена столбцов. См. макет ниже:

import csv
df = pd.read_csv("file.dat", delim_whitespace=True, names=['a','b','c','d','e','f','g','h','i','j'], )
df

Результат ниже:

введите здесь описание изображения

person MEdwin    schedule 12.11.2018
comment
Во-вторых, я импортировал io и StringIO, но затем, запустив этот код f = io.stringIO(fakepath\Exercises\hyades_pm.dat), он выдает следующую ошибку: TypeError: initial_value должен быть unicode или None, а не str - person FRQ; 12.11.2018
comment
хорошо, я сейчас изменил его. так что вам не нужно io. Просто панды. Дайте мне знать, если это работает. - person MEdwin; 13.11.2018