6

Pythonは初めてで、ファイルi/oのロープを学習しようとしています。

私はこの形式の大きな(200万行)ファイルから行をプルする作業をしています:

56fr4
4543d
4343d
5irh3

コードを返すために使用している関数は次のとおりです。

def getCode(i):
    with open("test.txt") as f:
        for index, line in enumerate(f):
            if index == i:
                code = # what does it equal?
                break
    return code

インデックスが適切な場所に到達したら(i)、コード変数を設定するためにどの構文を使用しますか?

4

2 に答える 2

12

code = line.strip()

末尾の新しい行を削除しながら、iに等しい行番号にコードを割り当てます。

また、コードを少し更新する必要があります

 def getCode(i):
    with open('temp.txt', 'r') as f:
             for index, line in enumerate(f):
                     if index == i:
                             code = line.strip()
                             return code

なぜあなたが必要なのか.strip()

>>> def getCode(i):
...     with open('temp.txt') as f:
...             for index, line in enumerate(f):
...                     if index == i:
...                             code = line
...                             return code
 ... 
>>> getCode(2)
"                  'LINGUISTIC AFFILIATION',\n"

はい、「'LINGUISTIC AFFILIATION'」は、現在のtemp.txtにあります。

于 2011-06-24T20:17:22.707 に答える
8

enumerateあるイテレータを別のイテレータに変換して、反復するものがペア(数値ID、基になるイテレータの元のアイテム)になるようにします。

私たちの場合には:

for index, line in enumerate(f):

fファイルオブジェクトです。ファイルオブジェクトはイテレータです。ファイルの行を反復処理します。

これを(行番号、ファイルからの行)ペアのイテレータに変換します。

ループ構文はforイテレータを反復処理し、(行番号、ファイルからの行)ペアを変数(インデックス、行)に割り当てます。これは、あるタプルを別のタプルに割り当てる通常の動作です。

したがって、ループを通過するたびにindex、行番号lineが割り当てられ、ファイルから対応する行が割り当てられます。ファイルからの行はあなたが望むものであり(おそらくいくつかのフォーマットで)、それをline含んでいるので...

上記のいずれかが意味をなさない場合は、おそらく言語の紹介を読み直す必要があります。

于 2011-06-24T20:43:31.123 に答える