列表字符串中的所有指标满足某些字符串
问题描述:
我想使用Python来读取文本文件,并在文件中搜索特定字符串如下列表字符串中的所有指标满足某些字符串
with open("controlDict","r") as myfile:
file=myfile.read()
IndexFirst=file.find('fields')
然而,我发现,它仅给了我文件中'字段'的第一个索引,但是我需要找到'字段'出现在行上的所有索引。
我做了一些研究网上,并试图下面
Index=[i for i, val in enumerate(file) if val=='fields']
,但它不能正常工作,并返回一个空列表。
我不确定为什么,有人有什么建议吗?
答
打开文件,遍历每一行,并检查它是否包含“域”,如果是的话,打印线
with open("controlDict", "r") as myfile:
for line in myfile.readlines():
if 'fields' in line:
print(line)
如果你只需要行的索引可以使用
with open("controlDict", "r") as myfile:
for index, line in enumerate(myfile.readlines()):
if 'fields' in line:
print(index)
答
如果你想在Word域出现在该文件中的具体指标,你可以做到以下几点:
str = "fields"
indices = []
i = 0
while i >= 0:
i = file.find(str,i)
indices.append(i)
如果你想要行索引,你可以使用AK47的答案。
答
,如果你想的话,指标
def all_occurences(file, str):
initial = 0
while True:
initial = file.find(str, initial)
if initial == -1: return
yield initial
initial += len(str)
print(list(all_occurences(open("controlDict.txt").read(), "fields")))
您可以使用此代码
答
的re
模块和列表理解,可以使用:
import re
with open('controlDict.txt', 'r') as myfile:
file = myfile.read()
indices = [match.start() for match in re.finditer('fields', file)]
你想要的清单索引字段出现的位置? – BHawk
你可以使用正则表达式和're.findall()' – Barmar