У меня есть программа, которая читает кучу файлов и добавляет необходимые мне данные. Мне нужно теперь взять эти конкретные данные и показать их как список. Более конкретно, это параметры, которые у меня есть:Создание столбцов списков данных в python
a = Источник, b = яркость, c = погрешность яркости, d = HST, e = XRS, f = gmag, g = z и h = rh
Я хочу отобразить это в списке, каждый из которых определяет конкретный столбец. Я просто не знаю, где именно я должен вставить оператор печати среди различных циклов, которые я сделал для этого.
Буду признателен за любую помощь! Вот программа (основное внимание уделяется выполненным циклам и тому, как они перебирают данные, и не беспокоиться о углублениях, программа пока работает, мне просто нужно отобразить данные, добавленные в столбцах):
import sys
import os
import re
import urllib
import urllib2
from os.path import basename
import urlparse
import shutil
base_dirname = '/projects/XRB_Web/apmanuel/499/'
base_sourcefile = base_dirname + 'Sources.txt'
try:
file = open(base_sourcefile, 'r')
except IOError:
print 'Cannot open: '+base_sourcefile
Source = []
Finallist = []
ACS = []
SRC = []
for line in file:
data_line_check = (line.strip())
if data_line_check:
line = re.sub(r'\s+', ' ', line)
point = line.split('|')
temp_source = (point[0]).strip()
if temp_source and len(point) == 3:
Source = (point[0]).strip()
Source = re.sub(r'\s', '_', Source)
print Source+"\n"
temp_finallist = (point[1]).strip()
if temp_finallist:
Finallistaddress = (point[1]).strip()
Finallistaddress = re.sub(r'\s', '_', Finallistaddress)
Luminositybase_dirname1 = '/projects/XRB_Web/apmanuel/499/Lists/' + Finallistaddress
try:
file2 = open(Luminositybase_dirname1, 'r')
except IOError:
print 'Cannot open: '+Luminositybase_dirname1
source = []
luminosity = []
luminosityerr = []
for line in file2:
pointy = line.split()
a = int(pointy[0])
b = float(pointy[5])
c = float(pointy[6])
source.append(a)
luminosity.append(b)
luminosityerr.append(c)
temp_HST = (point[2]).strip()
if temp_HST:
HSTaddress = (point[2]).strip()
HSTaddress = re.sub(r'\s', '_', HSTaddress)
HSTbase_dirname2 = '/projects/XRB_Web/apmanuel/499/Lists/' + HSTaddress
try:
file3 = open(HSTbase_dirname2, 'r')
except IOError:
print 'Cannot open: '+HSTbase_dirname2
HST = []
for line in file3:
pointy2 = line.split()
d = int(pointy2[0])
HST.append(d)
temp_XRS = (point[3]).strip()
if temp_XRS:
XRSaddress = (point[3]).strip()
XRSaddress =re.sub(r'\s', '_', XRSaddress)
XRSbase_dirname3 = '/projects/XRB_Web/apmanuel/499/Lists/' + XRSaddress
try:
file4 = open(XRSbase_dirname3, 'r')
except IOError:
print 'Cannot open: '+XRSbase_dirname3
XRS = []
for line in file4:
pointy3 = line.split()
e = int(pointy3[0])
XRS.append(e)
temp_others = (point[4]).strip()
if temp_others:
othersaddress = (point[4]).strip()
othersaddress =re.sub(r'\s', '_', othersaddress)
othersbase_dirname4 = '/projects/XRB_Web/apmanuel/499/Lists/' + othersaddress
try:
file5 = open(othersbase_dirname4, 'r')
except IOError:
print 'Cannot open: '+othersbase_dirname4
gmag = []
z = []
rh = []
for line in file5:
pointy4 = line.split()
f = float(pointy4[3])
g = float(pointy4[5])
h = float(pointy4[7])
rh.append(f)
gmag.append(g)
z.append(h)
Кажется невероятно обратным способом назвать ваши переменные как «a, b, c, e, f, g ...», а затем должны явно называть их для нас. Почему бы просто не использовать имена переменных, например 'source, luminosity, luminosity_error, hst, xrs ...'? – msvalkon
Извините, я просто указывал на общий макет проблемы. До сих пор я думал о принятии циклов for внутри инструкции def(), а затем распечатывать цикл, но это только пугает меня. –
Считаете ли вы использование [Pandas] (http://pandas.pydata.org/)? Вероятно, это упростит ваш код сканирования файлов и позволит вам сосредоточиться на анализе данных. В частности, посмотрите документацию по чтению текстовых файлов с помощью [IO Tools] (http://pandas.pydata.org/pandas-docs/stable/io.html#csv-text-files). – crayzeewulf