0

たとえば、次の行で構成される短いファイルを考えてみましょう。

Apple = 1
Pear = 1
Orange = 2
;
Orange = 3
Pear = 1
;
Apple = 1
Pear = 1
Orange = 1

私がしたことは、テキストファイルをreadlineし、を入れてApple、次のようなそれぞれのリストに入れることでした。OrangePear

Orange = [ 2,3,1 ]
Pear = [ 1,1,1 ]

以前line.count('Apple')==1は、テキストファイルの現在の行が果物であることを確認し、その後に値=をリストに追加していました。

ご覧のとおり、2番目のセクションがありませんApple。リストを次のようにします。

Apple = [ 1,'-',1]

行に果物が表示されていない場合は常に、リストに追加-してそれを示す必要があります。

私の質問は、どうすればそれを行うことができるかということです。セクションにフルーツ名がないことを確認してから、それに追加-します。

4

3 に答える 3

2

セクションで見つかったすべての果物の名前を含む配列を保持できます。セミコロンに遭遇した場合、各果物の名前が配列に存在するかどうかを確認し、存在しない場合は「-」を追加し、配列をクリアして次のセクションに進みます。

于 2012-07-25T06:11:06.937 に答える
0
from collections import defaultdict
from itertools import takewhile

d = defaultdict(list)
valid_fruits = set(['Apple', 'Pear', 'Orange'])

with open('data.txt') as f:
    while True:
        fruits = dict(takewhile(lambda x: x[0] != ';',
                                (line.rstrip().split(' = ') for line in f)))
        if not fruits:
            break
        for fruit in valid_fruits:
            if fruit in fruits:
                d[fruit].append(int(fruits[fruit]))
            else:
                d[fruit].append('-')

print d

出力:

defaultdict(<type 'list'>, {'Orange': [2, 3, 1], 'Pear': [1, 1, 1], 'Apple': [1, '-', 1]})
于 2012-07-25T06:34:07.230 に答える
0
if line.count('Apple')==1:
    Apple.append(str(number))
else:
    Apple.append('-')
于 2012-07-25T06:32:30.960 に答える