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

时间:2017-10-18 23:02:04

标签: python string filereader

我正在尝试使用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']

但它不起作用并返回一个空列表。

我不知道为什么,有人有什么建议吗?

4 个答案:

答案 0 :(得分:1)

打开文件,遍历每一行并检查它是否包含'字段'如果是,打印行

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)

答案 1 :(得分:0)

如果您想要文件中出现单词字段的确切索引,您可以执行以下操作:

str = "fields"
indices = []
i = 0
while i >= 0:
  i = file.find(str,i)
  indices.append(i)

如果您想要线索引,可以使用AK47的答案。

答案 2 :(得分:0)

如果你想要单词的索引

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

您可以使用此代码

答案 3 :(得分:0)

可以使用re模块和列表理解:

import re

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

indices = [match.start() for match in re.finditer('fields', file)]