2017-10-18 51 views
0

我想使用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'] 

,但它不能正常工作,并返回一个空列表。

我不确定为什么,有人有什么建议吗?

+0

你想要的清单索引字段出现的位置? – BHawk

+0

你可以使用正则表达式和're.findall()' – Barmar

回答

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

如果你想在Word域出现在该文件中的具体指标,你可以做到以下几点:

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

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

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

您可以使用此代码

0

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

import re 

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

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