1

現在、'|' でフラット ファイルを分割するプログラムに取り組んでいます。記号を付け、各エンティティをコードで定義された新しいオブジェクトに分離します。次のようになります。

    results = 0
    searchphrase = input("Search: ")
    with open('file.dat', 'r', encoding='utf8') as info_1:
        for line in info_1:
            a, b, c, d, e, f, g, h, i, j, k, l, m = line.split('|')
            if searchphrase in a:
                results +=1
                print(results, a + '|' + b + '|' + c etc.)

編集1

これは、動作しないプログラムのバージョンでありneed more than 1 value to unpack、行に解決するエラー メッセージが表示されますa, b, c, d, e, f, g, h, i, j, k, l, m = line.split('|')

呼び出しているファイルからのデータの形式は次のとおりです。

a|b|c|d|e|f|g|h|i|j|k|l|m

それを単一の行として解釈し、各エンティティを独自のオブジェクトに広げない理由はありますか? 次のようにすると、プログラムは正常に実行されます。

results = 0
searchphrase = input("Search: ")
with open('file.ext', 'r', encoding='utf8') as info_1:
    for line in info_1:
        a = line.split('|')
        if searchphrase in a:
            results +=1
            print(results, a)

しかし、ファイルの特定の列に基づいて情報を検索できるようにしたいと考えています (つまり、a で x を検索し、d で y を検索するなど)。どうすればそれを行うことができますか?

4

1 に答える 1

4

入力に空の行がある可能性があります。これらをスキップしてください:

for line in info_1:
    if not line.strip(): continue

ただし、代わりにcsvモジュールを使用することをお勧めします。

import csv

for row in csv.reader(open('file.dat', newlines=''), delimiter='|'):
于 2013-02-25T19:01:12.687 に答える