Python 3.4.3:迭代文本文件中的每一行和每一行中的每个字符
我必须编写一个程序,在文本文件的每一行上迭代,然后在每一行中的每个字符上迭代,以便计算每一行中的条目数 以下是文本文件的一段:Python 3.4.3:迭代文本文件中的每一行和每一行中的每个字符,python,text-files,Python,Text Files,我必须编写一个程序,在文本文件的每一行上迭代,然后在每一行中的每个字符上迭代,以便计算每一行中的条目数 以下是文本文件的一段: 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,
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(",")
我的问题是,当我试图运行程序时,我创建的每个变量都不存在。我得到一个“学生”没有定义的错误
我知道我的编码很糟糕,但我是个初学者。很抱歉谢谢你,非常感谢你的帮助 使用
列表、计数和if条件的方法的简化代码
代码:
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)
不可用_行=0
对于文件中的行:
answers=line.strip().split(“,”)
如果len(答案)<26:
不可用的_线+=1
打印(“文件中不可用的行:”,不可用的_行)
注意事项:
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)
- 最初,我创建了一个变量来存储不稳定行的计数
不可用的行
- 然后我迭代文件对象的行
- 然后我将
处的行拆分以创建一个列表,
- 然后我检查列表的计数是否小于26。如果是这样,我会增加
变量不可用_行
- 最后我把它打印出来了
str.split()
返回一个包含您的元素的list[]
,您可以使用len()
你可以做得更短:
with open('my_fike.txt') as fobj:
unusable = sum(1 for line in fobj if len(line.split(',')) != 26)
带有open('my_fike.txt')作为fobj:的行
打开文件进行读取,并在离开缩进块后自动关闭。我使用生成器表达式遍历所有行,并将长度不同于26的所有行相加。这是因为缩进在python中很重要。你的缩进有点不对劲。但你的主要问题是你已经在这里用完了alldata=file.read()
,当你对文件中的行执行时:
文件对象中没有对象,因此循环即使执行一次也不会执行,因此没有创建学生或答案变量