2013-02-20 1 views
0

Я новичок в Python, и я делаю этот проект, где у меня есть текстовый файл с 7 столбцами чисел. Мне нужно написать программу, которая извлекает данные для столбцов 1, 6 и 7 и печатает их в столбцах только с этими данными только в столбцах. Это то, что я сделал до сих пор, но что-то кажется неправильным. Может ли кто-нибудь указать мне?Использование python для чтения списка в txt-файле

import sys 
import os 
import re 

GC11 = 'NGC4697' 

base_dirname = '/projects/XRB_Web/abcadmus/499/Lists/' 
Luminositylist = base_dirname + GC11 + '_final_list.txt' 

try: 
    file = open(Luminositylist, 'r') 
except IOError: 
    print 'Cannot open: '+Luminositylist 

source = [ ] 
luminosity = [ ] 
luminosityerr = [ ] 
for line in file: 
    point = line.split() 
    a = source.append(int((point[0]))) 
    b = luminosity.append(float((point[5]))) 
    c = luminosityerr.append(float((point[6]))) 
    print a, b, c 
+1

Покажите нам, как выглядит ваш формат файла. Каков вклад, каков ожидаемый результат? – Aesthete

ответ

0

Предполагая, что у меня есть файл с именем test.txt со следующей планировкой:

ABC1234 
DEF5678 
GHI9101 

Я могу это сделать,

with open('test.txt', 'r') as f: 
    out = [[x[0],x[5],x[6]] for x in f.readlines()] 

Чтобы получить результат в out, который выглядит следующим образом:

[['A', '3', '4'], ['D', '7', '8'], ['G', '0', '1']] 
2

list.append() возвращает None, поэтому ваш назначенный не делают ничего полезного.

Я не знаю, почему вам нужно распечатать их и добавить их в список, но попробуйте вместо этого:

point = line.split() 

    a = int(point[0]) 
    b = float(point[5]) 
    c = float(point[6]) 

    source.append(a) 
    luminosity.append(b) 
    luminosityerr.append(c) 

    print a, b, c 
+0

Спасибо за ответы всем! Собираюсь попробовать все методы! –

0

решение, которое работает с CSV (или разграничены) файл с любым числом столбцы

f = file("myFile", mode="r") 
delimiter = "," # comma for csv files 

myData = [i.split(delimiter) for i in file.readlines()] # All the data as a nested list 
myColumns = [row[0],row[5],row[6] for row in myData] # select your source, lum and lumerr columns 
source, luminosity, luminosityerr = zip(*myColumns) 
Смежные вопросы