0

我有一个读取 3GB 大数据文件的脚本,我不需要所有数据,如果满足条件,我想跳过特定的数据行。是否有 Python 函数可以跳过数据文件中的一行数据并继续读取文件?我检查了 3.2 文档,但只找到了一个跳过数据块的函数。

编辑

读入这样的数据

def read_file(F):      #Function that reads data froma file  
                   #and extracts specific data columns
X = []
Y = []                # Creats Data Lists
Z = []


N =   11912639  # number of lines to be read
f = open(F)           #Opens file
f.readline()          # Strips Header
nlines = islice(f, N) #slices file to only read N lines


for line in nlines:             #Loop Strips empty lines as well as replaces tabs with   space
    if line !='':
        line = line.strip()
        line = line.replace('\t',' ')
        columns = line.split()
        x = columns[0]             # assigns variable to columns
        y = columns[1]
        z = columns[2]
        X.append(x)
        Y.append(y)                #appends data in list
        Z.append(z)

我想做的是在上面的代码中添加一个 if 语句,例如

if x > somevalue:
    skipline
else:
    continue 
4

3 回答 3

3

如果文件中的行对应于行,则只需使用列表推导:

with open(path) as input_file:
    contents = [row for row in input_file if not unwanted(row)]

如果您从一些惰性阅读器而不是默认的逐行文本文件阅读器读取文件,则可能会出现类似的结构。

如果您想懒惰地读取文件,请替换[]为。()

于 2012-05-23T21:14:23.033 回答
1

如果我正确理解您的示例代码,那么您正在寻找的是这样的:

for line in nlines:
    line = line.strip()
    if line == '': 
        continue # skip empty lines

    line = line.replace('\t',' ')
    x, y, z = line.split()

    if x > somevalue: 
        continue # skip line if x > somevalue

    X.append(x)
    Y.append(y)
    Z.append(z)
于 2012-05-23T21:47:59.990 回答
0

你可以自己手动完成。

for line in file:
    if 'foo' not in line:  
        print 'profiting'
于 2012-05-23T21:16:24.023 回答