0

以包含以下几行的短文件为例:

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

我所做的是读取文本文件,并将Apple,OrangePear放入各自的列表中,例如:

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

我曾经line.count('Apple')==1确定文本文件中的当前行是一个水果,然后将其后的值附加=到列表中。

如您所见,缺少第二部分Apple。我希望列表是:

Apple = [ 1,'-',1]

每当该行不显示水果时,应附加列表-以指示它。

我的问题是,那我该怎么做。确定一个部分缺少水果名称,然后附加-到它。

4

3 回答 3

2

您可以保留一个数组,其中包含在一个部分中找到的所有水果名称。当您遇到分号时,您检查每个水果的名称是否存在于数组中,如果不存在则附加一个“-”,然后清除数组并继续下一部分。

于 2012-07-25T06:11:06.937 回答
0
if line.count('Apple')==1:
    Apple.append(str(number))
else:
    Apple.append('-')
于 2012-07-25T06:32:30.960 回答
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 回答