2017-10-18 74 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)]