Python 列出字符串中满足特定字符串的所有索引

Python 列出字符串中满足特定字符串的所有索引,python,string,filereader,Python,String,Filereader,我正在尝试使用python读取文本文件并搜索文件中的某个字符串,如下所示 with open("controlDict","r") as myfile: file=myfile.read() IndexFirst=file.find('fields') 然而,我发现它只给了我文件中“fields”的第一个索引,但我需要找到“fields”出现在行中的所有索引 我在网上做了一些研究,并在下面进行了尝试 Index=[i for i, val in enumerate(file) if

我正在尝试使用python读取文本文件并搜索文件中的某个字符串,如下所示

with open("controlDict","r") as myfile:
    file=myfile.read()

IndexFirst=file.find('fields')
然而,我发现它只给了我文件中“fields”的第一个索引,但我需要找到“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)

如果需要文件中单词字段所在的确切索引,可以执行以下操作:

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)]

是否要显示单词字段的索引列表?可以使用regexp和re.findall