2

FirstName、Last name、Age、gender という内容の abc.txt という名前のファイルがあるとします。

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

私の要件は、FirstName、LastName、および age のみが必要であるということです。では、ファイルを使用して要件を検証/確認するにはどうすればよいですか。クラスオブジェクトで使用するこれらの3つのフィールド

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

4 番目のフィールドは無視できます。

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

ちょうど3 つのフィールドを持つ行のみを使用する場合は、次のようにします。

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 に答える