在python中读取具有可变列数的文件

时间:2016-09-13 12:28:20

标签: python file multiple-columns

我正在读取一个列数可变的文件,比如3个固定列+未知/可变列数:

21 48 77
15 33 15 K12
78 91 17
64 58 24 R4 C16 R8
12 45 78 Y66
87 24 25
10 33 75
18 19 64 CF D93

我想将前三个列条目存储在特定的列表/数组中,因为我需要使用它们,同时将所有剩余部分(从列[2]到行尾)放在另一个单行中字符串,因为我不需要对它采取行动,只是为了复制它。

我写道:

import os, sys
import numpy as np

fi = open("input.dat", "r")
fo = open("output.dat", "w")

for line in fi:
    line = line.strip()
    columns = line.split()
    A00 = str(columns[0])
    A01 = str(columns[1])
    A02 = str(columns[2])
    A03 = EVERTHING ELSE UNTIL END OF LINE

有一种简单的方法吗?提前谢谢。

3 个答案:

答案 0 :(得分:1)

您可以使用此代码:

import os, sys
import numpy as np
fi = open("input.dat", "r")
fo = open("output.dat", "w")
column_3 = []

for line in fi:
    line = line.strip()
    columns = line.split()
    A00 = str(columns[0])
    A01 = str(columns[1])
    A02 = str(columns[2])
    column_3.append(str(columns[3]))
print(column_3)

答案 1 :(得分:1)

字符串拆分允许限制提取的部分数量,因此您可以执行以下操作:

A00, A01, A02, rest = line.split(" ", 3)

示例:

print "1 2 3 4 5 6".split(" ", 3)
['1', '2', '3', '4 5 6']

答案 2 :(得分:0)

我认为以下代码段可以帮助您。此外,您可以编辑项目的此代码。

f = open("input.dat") 

line = f.readline().strip() # get the first line in line

while line: # while a line exists in the file f
    columns = line.split('separator') # get all the columns
    while columns: # while a column exists in the line
        print columns # print the column
    line = f.readline().strip() # get the next line if it exists

我希望它可以帮到你。