Python 3.4.3:迭代文本文件中的每一行和每一行中的每个字符
Python 3.4.3: Iterating over each line and each character in each line in a text file
我必须编写一个程序来遍历文本文件中的每一行,然后遍历每一行中的每个字符,以便计算每一行中的条目数。
这是文本文件的一部分:
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
第一行和最后一行是 "unusable lines",因为它们包含太多条目(多于或少于 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(",")
我的问题是,当我尝试 运行 程序时,我创建的每个变量都不存在。我收到 "students" is not defined 错误。
我知道我的编码很糟糕,但我是初学者。对不起!!!谢谢您,我们将不胜感激!!!
使用 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
。
- 然后我遍历文件对象的行。
- 然后我在
,
处拆分行以创建一个列表。
- 然后我检查列表的计数是否小于 26。如果是,我增加
unusable_line
变量。
- 终于打印出来了
您可以使用类似这样的东西并将其包装到一个函数中。您不需要重新迭代行中的项目,str.split()
returns a list[]
中包含您的元素,您可以使用 [=13 计算其元素的数量=]
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))
你可以做得更短:
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 的行加起来。
我必须编写一个程序来遍历文本文件中的每一行,然后遍历每一行中的每个字符,以便计算每一行中的条目数。
这是文本文件的一部分:
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
第一行和最后一行是 "unusable lines",因为它们包含太多条目(多于或少于 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(",")
我的问题是,当我尝试 运行 程序时,我创建的每个变量都不存在。我收到 "students" is not defined 错误。
我知道我的编码很糟糕,但我是初学者。对不起!!!谢谢您,我们将不胜感激!!!
使用 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
。 - 然后我遍历文件对象的行。
- 然后我在
,
处拆分行以创建一个列表。 - 然后我检查列表的计数是否小于 26。如果是,我增加
unusable_line
变量。 - 终于打印出来了
您可以使用类似这样的东西并将其包装到一个函数中。您不需要重新迭代行中的项目,str.split()
returns a list[]
中包含您的元素,您可以使用 [=13 计算其元素的数量=]
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))
你可以做得更短:
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 的行加起来。