0

私は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
4

4 に答える 4

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
于 2013-02-20T03:34:16.423 に答える
0

Python CSVライブラリを見てください:http://docs.python.org/2/library/csv.html、おそらくあなたはそれがあなたがすでに必要とするすべてをするのを見つけるでしょう。

于 2013-02-20T03:33:14.903 に答える
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']]
于 2013-02-20T03:33:51.587 に答える
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)
于 2013-02-20T04:09:59.023 に答える