我是Python的初学者,我正在做这个项目,我有一个包含7列数字的文本文件。我需要编写一个程序来提取第1列,第6列和第7列的数据,然后将它们打印在列中,仅列中的数据。 这是我到目前为止所做的,但似乎有些不对劲。有人可以指出我吗?
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
答案 0 :(得分: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
答案 1 :(得分:0)
看看Python CSV库:http://docs.python.org/2/library/csv.html,您可能会发现它已经完成了您需要的所有工作。
答案 2 :(得分: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']]
答案 3 :(得分: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)