3 回答

TA贡献1886条经验 获得超2个赞
如果您需要知道X出现的行号:
target = 'X'
counter = 0
with open('testing.txt') as f:
for i, line in enumerate(f):
if target in line:
counter += 1
print('target is present in line {}'.format(
i+1))
print('target appears in {} lines'.format(counter))
如果您还需要知道X出现的列号:
target = 'X'
counter = 0
with open('testing.txt') as f:
for i, line in enumerate(f):
for j, char in enumerate(line):
if target == char:
counter += 1
print('target is present in line {} at column {}'.format(
i+1, j+1))
print('target appears {} times'.format(counter))
一些澄清:
with ... open
完成后自动关闭文件,因此您无需记住显式关闭它for i, line in enumerate(f):
逐行迭代,而不将它们一次性全部加载到内存中。

TA贡献1829条经验 获得超9个赞
由于readlines()是一个列表,您需要迭代并签入行。也许您可以用于for else此目的:
file = "testing.txt"
file = open(file, "r")
lines = file.readlines()
# char in the list
for line in lines:
if "X" in line:
print('X is present in the list')
break
else:
print('X is not present in the list')
它迭代每一行,如果任何行有字符,则break仅else在任何行中都找不到字符时才运行。
更新
如果你想计数,那么你可以简单地在循环中增加计数器,一旦循环完成检查计数器:
file = "testing.txt"
file = open(file, "r")
lines = file.readlines()
# char in the list
counter = 0
for line in lines:
if "X" in line:
counter += 1 # < -- count
if counter: # check
print('X is present in the list')
else:
print('X is not present in the list')

TA贡献1993条经验 获得超6个赞
正如您所要求的,我将输出一个包含 item 的列表Yes, there are 3 X's。
我有我的dataf.txt文件:
XXX X XX X XX
X ASD X F FFFF XX
D X XXX X EFX
A F G
将数据读入文件并计算 X 的数量(注意:我使用了列表理解 hack!)
with open('dataf.txt','r') as fl:
data = fl.readlines()
a = ['Yes, there are '+str(i.count('X')) + " X's" if 'X' in i else "No X's" for i in data]
print(a)
输出:
["Yes, there are 9 X's", "Yes, there are 4 X's", "Yes, there are 6 X's", "No X's"]
添加回答
举报