根据特定标准将文本文件读入列表

时间:2018-05-09 23:13:04

标签: python python-3.x list

我有一个包含以下内容的文本文件:

str1 str2 str3 str4
0        1    12     34
0        2      4     6
0        3     5      22
0       56    2      18
0         3    99    12    
0         8    5       7      
1       66    78    9

我想将上面的文本文件读入一个列表,以便程序从第一列的值大于零的行开始读取。

我如何在Python 3.5中完成它?

我尝试了genfromtxt(),但我只能从顶部跳过固定数量的行。由于我将阅读不同的文件,我需要别的东西。

2 个答案:

答案 0 :(得分:0)

这是csv模块的一种方式。

import csv
from io import StringIO

mystr = StringIO("""\
str1 str2 str3 str4
0        1    12     34
0        2      4     6
0        3     5      22
0       56    2      18
0         3    99    12    
0         8    5       7      
1       66    78    9
2       50    45    4
""")

res = []

# replace mystr with open('file.csv', 'r')
with mystr as f:
    reader = csv.reader(mystr, delimiter=' ', skipinitialspace=True)
    next(reader)  # skip header
    for line in reader:
        row = list(map(int, filter(None, line)))  # convert to integers
        if row[0] > 0:  # apply condition
            res.append(row)

print(res)

[[1, 66, 78, 9], [2, 50, 45, 4]]

答案 1 :(得分:-3)

lst = []
flag = 0 

with open('a.txt') as f:
    for line in f:
        try:
            if float(line.split()[0].strip('.')) >0:
                flag = 1 
            if flag == 1:
                lst += [float(i.strip('.')) for i in line.split()]
        except: 
            pass