我必须编写一个程序,迭代文本文件中的每一行,然后遍历每行中的每个字符,以计算每行中的条目数。
以下是文本文件的一部分:
N00000031,B,,D,D,C,B,D,A,A,C,D,C,A,B,A,C,B,C,A,C,C,A,B,D,D,D,B,A,B,A,C,B,,,C,A,A,B,D,D
N00000032,B,A,D,D,C,B,D,A,C,C,D,,A,A,A,C,B,D,A,C,,A,B,D,D
N00000033,B,A,D,D,C,,D,A,C,B,D,B,A,B,C,C,C,D,A,C,A,,B,D,D
N00000034,B,,D,,C,B,A,A,C,C,D,B,A,,A,C,B,A,B,C,A,,B,D,D
第一行和最后一行是"不可用的行"因为它们包含太多条目(多于或少于25个)。我想计算文件中不可用行的数量。
这是我的代码:
for line in file:
answers=line.split(",")
i=0
for i in answers:
i+=1
unusable_line=0
for line in file:
if i!=26:
unusable_line+=1
print("Unusable lines in the file:", unusable_line)
我也尝试过使用这种方法:
alldata=file.read()
for line in file:
student=alldata.split("\n")
answer=student.split(",")
我的问题是当我尝试运行程序时,我创建的每个变量都不存在。我得到了一个"学生"未定义错误。
我知道我的编码很糟糕,但我是初学者。抱歉!!!谢谢你,任何帮助都表示赞赏!!!
答案 0 :(得分:0)
使用list,count and if condition
<强>代码:强>
unusable_line = 0
for line in file:
answers = line.strip().split(",")
if len(answers) < 26:
unusable_line += 1
print("Unusable lines in the file:", unusable_line)
备注:强>
unusable_line
的数量。,
以创建一个列表。unusable_line
变量。答案 1 :(得分:0)
你可以使用这样的东西并将其包装成一个函数。您不需要重新迭代该行中的项目,str.split()
会返回包含您的元素的list[]
,您可以使用len()
计算其元素的数量
my_file = open('temp.txt', 'r')
lines_count = usable = ununsable = 0
for line in my_file:
lines_count+=1
if len(line.split(',')) == 26:
usable+=1
else:
ununsable+=1
my_file.close()
print("Processed %d lines, %d usable and %d ununsable" % (lines_count, usable, ununsable))
答案 2 :(得分:0)
你可以做得更短:
with open('my_fike.txt') as fobj:
unusable = sum(1 for line in fobj if len(line.split(',')) != 26)
行with open('my_fike.txt') as fobj:
打开文件进行读取,并在离开缩进块后自动关闭它。我使用生成器表达式遍历所有行,并将所有长度不同于26的行加起来。