只读取文件的某些部分并计算元素的数量

时间:2015-03-04 03:13:09

标签: python

这是我想要阅读的文件。 (cube.obj)

#cube
v 0.0 0.0 0.0
v 1.0 0.0 0.0
v 1.0 0.0 1.0
v 0.0 0.0 1.0
v 0.0 1.0 1.0
v 0.0 1.0 0.0
v 1.0 1.0 0.0
v 1.0 1.0 1.0

f 1 2 3 4
f 6 7 8 5
f 2 3 8 7
f 1 4 5 6
f 3 4 5 8
f 1 2 7 6

我试图计算这部分中的元素数量:

f 1 2 3 4
f 6 7 8 5
f 2 3 8 7
f 1 4 5 6
f 3 4 5 8
f 1 2 7 6

所以这个案例是30.请注意,这也是将f计为元素

这是我到目前为止所做的。

def count_numOfFace(f):
    with open(f) as fin:
        ct = 0
        for line in fin:
            if line.strip():
                if line.split()[0] == 'f':
                     # need help here

我对这个问题感到很困惑。 任何帮助是极大的赞赏。 谢谢你的时间。

2 个答案:

答案 0 :(得分:3)

这是一个好的开始。

for line in fin:
    toks = line.split()
    if toks and toks[0] == 'f':
        ct += len(toks) - 1

您不想计算行的长度 - 这是字符数(包括空格)。您想要计算从中拆分的项目数(减去第一个,“f”)。如果不保存line.split()的结果,则会丢失该数字。

toks将是一个字符串列表,例如['f', '1', '2', '3', '4']

答案 1 :(得分:1)

我认为以下内容可能有效:

def count_numOfFace(f):
    with open(f) as fin:
        ct = 0
        for line in fin:
            sline = line.strip()
            if sline:
                ssline = sline.split(' ')
                if ssline[0] == 'f':
                     ct += len(ssline)

元素的数量应该等于因空间分割而产生的数组长度。