2

假设我有一个名为 abc.txt 的文件,其中包含 FirstName、Last name、Age、gender

Jack, Hugman, 22, M
Joe, Zareil, 32, M
Ashely, Timberlake, 28, F

现在我的要求是我只需要名字、姓氏和年龄。那么我如何使用文件验证/检查我的要求。我将在我的类对象中使用这三个字段

class A:

def __init__(self, fname, lname, age):
    self.fname = fname
    self.lname = lname
    self.age = age

fp = open("abc","r")

for lines in fp:
    temp = lines.split(",")
    print temp

这就是我所做的。我应该怎么做才能检查/验证?

4

3 回答 3

2

一个简单的方法是使用异常:基本上指定您对文件的期望,假设所有内容都在其中进行解析。如果一个断言触发了某些事情,那么它就关闭了。

例如你可以这样做:

a = A(temp[0], temp[1], int(temp[2])
于 2013-10-18T12:22:30.413 回答
1

你可以这样拆分

for lines in fp:
    temp = lines.split(",")[:-1]
    print temp
于 2013-10-18T12:27:03.583 回答
0

您可以忽略第四个字段。

class A:
    def __init__(self, fname, lname, age):
        self.fname = fname
        self.lname = lname
        self.age = age

    def __str__(self):
        return "fname={}, lname={}, age={}".format(self.fname, self.lname, self.age)

with open("abc.txt") as f:
    for line in f:
        fname, lname, age = [g.strip() for g in line.split(",")[:-1]]
        a = A(fname, lname, age)
        print(a)

结果:

fname=Jack, lname=Hugman, age=22
fname=Joe, lname=Zareil, age=32
fname=Ashely, lname=Timberlake, age=28

如果您只想使用恰好包含三个字段的行,请执行以下操作:

with open("in.txt") as f:
    for line in f:
        fields = [g.strip() for g in line.split(",")]
        if len(fields) == 3:
            a = A(fields[0], fields[1], fields[2])
            print(a)
于 2013-10-18T12:29:57.963 回答