Python 列出字符串中满足特定字符串的所有索引
我正在尝试使用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
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