如何根据python中的需求检查/验证现有文件
假设我有一个名为abc.txt的文件,内容包括名字、姓氏、年龄、性别如何根据python中的需求检查/验证现有文件,python,file,Python,File,假设我有一个名为abc.txt的文件,内容包括名字、姓氏、年龄、性别 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
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
这就是我所做的。我应该如何检查/验证?一种简单的方法是使用异常:基本上指定您对文件的期望,假设所有内容都在其中,则对其进行解析。如果断言触发,则某些内容已关闭 例如,您可以执行以下操作:
a = A(temp[0], temp[1], int(temp[2])
你可以这样分开
for lines in fp:
temp = lines.split(",")[:-1]
print temp
您可以忽略第四个字段
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)
1.你需要检查什么?您在
temp
中有字段。2.对照什么验证什么?对照现有文件bc.txt验证我的需求中只需要三个字段。我的需求有三个字段,一个文件中有四个字段。我应该如何检查?您看过CSV解析器模块了吗?您可以使用len()
检查列表中的元素数。您能更具描述性吗??我就在上面,这应该是有效的代码。它本身不做任何检查,但如果少于3个元素,您将命中索引器。如果第三个参数不能转换为int,则会出现ValueError。如果您愿意,您也可以手动捕获这些内容并显式处理它们。如果必须有四个字段,您可以添加assert len(temp)==4
@GajGaj-dornhege意味着,一旦您进行了拆分,a=a(temp[0],temp[1],temp[2])@dornhege您应该删除“int(temp[2]),以表示”temp[2]“不是吗?我的要求是三个字段,一个文件中有四个字段。我应该如何检查呢?如果len(temp)<4:,您需要执行;名称错误:名称“A”未定义A
是在A类
中定义的。