14

ファイルをリストに読み込む際に問題があります。そうすると、各要素を独自のフィールドに読み込むのではなく、ファイル全体から 1 つの項目しか作成されません。剥がすものとして使用\nしていますが、正しく動作させることができません。

temp = open('drugs')
drugs = [temp.read().strip("\n")]
temp.close

結果:

['40 Stimpak\n53 Mentats\n87 Buffout\n109 Rad-X\n125 Booze\n260 Jet Antidote\n311 Roentgen Rum\n424 Monument Chunk\n480 Bonus +1 Agility\n525 Hypo \n48 RadAway\n71 Fruit\n103 Iguana-on-a-stick\n110 Psycho\n144 Super Stimpak\n273 Healing Powder\n334 Poison\n469 Rot Gut\n481 Bonus +1 Intelligence \n49 Antidote\n81 Iguana-on-a-stick\n106 Nuka-Cola\n124 Beer\n259 Jet\n310 Gamma Gulp Beer\n378 Cookie\n473 Mutated Toe\n482 Bonus +1 Strength ']
drugs.strip('\n')

Traceback (most recent call last):
   File "seek", line 18, in <module>
     print drugs.strip('\n')
AttributeError: 'list' object has no attribute 'strip'
4

3 に答える 3

25

file.read()最大長を指定しない限り、ファイルの内容全体を読み取ります。あなたが意味しているに違いないのは.readlines(). しかし、リスト内包表記を使用すると、さらに慣用的になることができます。

with open('drugs') as temp_file:
  drugs = [line.rstrip('\n') for line in temp_file]

ステートメントはwith、ファイルを閉じる処理を行います。

于 2013-09-28T02:36:18.030 に答える
-1

forこれにより、ストリップがステートメントに直接組み込まれます。

with open('drugs', 'r') as f:
  for line in map(lambda line: line.rstrip('\n'), f):
    print line

または、行のテキストの前後にスペースが必要ないことがわかっている場合は、これを使用できます。

import string

with open('drugs', 'r') as f:
  for line in map(string.strip, f):
    print line
于 2016-03-10T21:22:12.537 に答える