-2

ファイルを読み込んで、文字列を含むリストとして内部のテキストを保存しようとしています (リスト内の各オブジェクトは、テキスト内の 1 行の文字列です)。テキストを 1 行ずつ印刷することしかできませんでした。リストとしてではありません。

テキストは生物学的なものの長いリストです (あなたが私に尋ねればランダムな文字 (:) そして-

    def read_proteome ( filename ):
       f= open(filename).readlines()
       for line in f:
          print(line)

ファイルのみを印刷しました(行を区切りました..)

どこで私は間違えましたか ?リストに設定するにはどうすればよいですか?

4

4 に答える 4

5

の結果.readlines() listです。印刷するだけfです:

print(f)
于 2012-12-28T22:09:04.717 に答える
1

Martijn Pieters はすでに簡単で完全な答えを出していますが、これらのことを自分で理解する方法を学ぶ価値があります。通常は高速であり、半ダースの反対票を投じることはありません。

まず、使用できるfor line in f:ということは、缶と同じようにループfで使用できるという点で、明らかに何らかのリストっぽいオブジェクトであることを意味します。技術的には、これは「反復可能」であることを意味します。forlist

たぶん、これはすでにlist? もしそうなら、あなたはすでに終わっています。そうでない場合、list関数は iterable を取り、それを alistにするので、追加するだけでf = list(f)完了です。

どのように見つけますか?

コードに追加print(type(f))して、出力される内容を確認できます。と表示されたらlist完了です。それ以外の場合は、変換行を追加する必要がありますf = list(f)

多くの場合、これはスクリプトではなく対話的に行う方が簡単です。

>>> f = open(filename).readlines()
>>> type(f)
list
>>> f
['first line\n', 'second line\n', 'last line\n']

これを細かく分解すると、各ピースのタイプを個別に確認できます。

>>> filename = 'C:/foo.txt'
>>> type(filename)
str
>>> fileobj = open(filename)
>>> type(fileobj)
_io.TextIOWrapper
>>> lines = fileobj.readlines()
>>> type(lines)
list

これをすべて 1 行にまとめるとlines=open('C:/foo.txt').readlines()、最終結果は 3 つのステップで行った場合と同じになります — <code>lines はlist.

しかし、何を試せばよいかわからないために、実験しても何かがわからない場合はどうでしょうか。

さて、対話型インタープリターにはヘルプが組み込まれています。

>>> fileobj = open(filename)
>>> help(fileobject.readlines)
Help on built-in function readlines:

readlines(...)
    Return a list of lines from the stream.

    hint can be specified to control the number of lines read: no more
    lines will be read if the total size (in bytes/characters) of all
    lines so far exceeds hint.

を返すとすぐそこに書かれていますlist

または、ドキュメントを参照してください。3.x のどこにあるのかを推測しようとするreadlinesのは、実際には少し複雑です。なぜなら、open返されるもののタイプが明らかではないからです…しかし、左側の「クイック検索」を使用するだけで、 が見つかりますio.ioBase.readlines。同じ答え:

readlines(hint=-1)

ストリームから行のリストを読み取って返します。読み取られる行数を制御するために、ヒントを指定できます。これまでのすべての行の合計サイズ (バイト/文字単位) がヒントを超える場合、それ以上の行は読み取られません。

于 2012-12-28T22:44:23.537 に答える
0

Martijn が言ったように、.readlines() はファイルをリストに変換し、それらを循環します。しかし、これはあなたがやろうとしていることだと思います。

with open("file.txt", 'r') as file:
    print file.read().split("\n")
于 2013-09-01T20:26:59.600 に答える
-2

Martijnが言ったように、readlines()メソッドはPythonのドキュメントで述べられているようにリストを返します。

文字列をリストに変換する必要がある場合は、次を使用してください:ast helper

astをインポート
stringList = "{'a':'text'}"
realList = ast.literal_eval(stringList)
realListを印刷します

これがあなたが必要とするものであることを願っています!

于 2012-12-28T22:19:49.360 に答える