次のようにファイルからの行のリストを取得する最も簡単な方法は次のとおりです。
with open('file', 'r') as f:
lines = f.readlines()
今、あなたはそれらの行を分割するか、あなたも一緒にやりたいことができます。
lines = [line.split() for line in lines]
私は」あなたの質問に答えてくれるかどうかわかりません - より具体的なことがあれば教えてください。私はあなたが求めているものを正確にを理解していないので
、ここでテキストファイルを処理する方法をいくつかのより多くの例があります。対話型インタプリタでこれらを試すことができます。対話型インタプリタは、コマンドラインで 'python'と入力するだけで一般にアクセスできます。
>>> with open('a_text_file.txt', 'r') as f:
... text = f.read()
...
>>> text
'the first line of the text file\nthe second line -- broken by a symbol\nthe third line of the text file\nsome other data\n'
これは、未加工のファイルのテキストです。それは文字列です。文字列は変更できません - 変更することはできませんが、部分的にまたは全体的にコピーすることができます。
>>> text.splitlines()
['the first line of the text file', 'the second line -- broken by a symbol', 'the third line of the text file', 'some other data']
splitlines
は文字列メソッドです。 splitlines
は、\n
(改行)文字が見つかるたびに文字列を分割します。文字列の別々のセクションのコピーを含むリストを返します。
>>> lines = text.splitlines()
ここでは、上記の行のリストを新しい変数名に保存しました。
>>> lines[0]
'the first line of the text file'
リストには索引付けによってアクセスします。 0
からlen(lines) - 1
までの整数を指定するだけで、対応する行が返されます。
>>> lines[2]
'the third line of the text file'
>>> lines[1]
'the second line -- broken by a symbol'
これで、個々の行を操作することができます。
>>> lines[1].split('--')
['the second line ', ' broken by a symbol']
split
は別の文字列メソッドです。これはsplitlines
のようなものですが、デマーケーターとして使用する文字または文字列を指定できます。
>>> lines[1][4]
's'
文字列内の文字をインデックスすることもできます。
>>> lines[1][4:10]
'second'
文字列を「スライス」することもできます。結果は4〜9の文字のコピーです。10はストップ値なので、10番目の文字はスライスに含まれません。 (あなたはあまりにもリストをスライスすることができます。)
>>> lines[1].index('broken')
19
あなたは、文字列内の部分文字列を検索する場合、一つの方法は、index
を使用することです。部分文字列が最初に出現するインデックスを返します。 (サブは、文字列内にない場合はエラーがスローされます。あなたはそれは、-1サブが文字列でない場合。返しfind
、使用したくない場合)次に
>>> lines[1][19:]
'broken by a symbol'
をそれを使って文字列をスライスすることができます。ストップインデックスを指定しないと、文字列の残りの部分だけが返されます。
>>> lines[1][:19]
'the second line -- '
開始インデックスを指定しないと、文字列の先頭が返され、停止インデックスで停止します。
>>> [line for line in text.splitlines() if 'line' in line]
['the first line of the text file', 'the second line -- broken by a symbol', 'the third line of the text file']
またin
を使用することができます - それはサブが文字列である場合True
を返すブーリアン演算です。この例では、リスト内包表記を使用して、'line'
の行のみを取得しました。 (最後の行がリストにないことに注意してください。フィルタされています)
質問がある場合は教えてください。
そして、私はhttp://docs.python.org/tutorial/datastructures.html#more-on-listsを読むことをお勧めします – SteveMc
これは多くの助けになります!しかし、ラインの一部だけを選択する方法はありますか? –
soooたくさんありがとう!私はどのようにupvote thhoughを受け入れるか分からない、ウェブサイトは私がポイントを持っていないと言っ続けている? –