0

3 GB の大きなデータ ファイルを読み取るスクリプトがあります。すべてのデータは必要なく、条件が満たされた場合にデータの特定の行をスキップしたいと考えています。データ ファイル内のデータ行をスキップしてファイルの読み取りを続行する 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 に答える