2016-04-09 2 views
0

ich eine Textdatei bedeutet das passende Wort zu drucken haben, die mit den Worten ein Englisch-Wörterbuch hat aufgeführt wie folgt aus:Lesen einer Textdatei, die ein englisches Wörterbuch enthält in Python

Zymome (n.) A glutinous substance, insoluble in alcohol, resembling legumin;   -- 
now called vegetable fibrin, vegetable albumin, or gluten casein. 

Zymometer (n.) Alt. of Zymosimeter 

Zymophyte (n.) A bacteroid ferment. 

Wie Sie die Bedeutungen zu sehen sind aus mehreren Zeilen. Könnte mir jemand mit einem Programm helfen, nach dem Wort in der Eingabe in der Textdatei zu suchen und die entsprechende Bedeutung dieses Wortes anzuzeigen?

-Code, die ich versucht:

x=raw_input("Enter word: ") 
with open('e:\\Python27\\My programs\\dictionary.txt') as file:  
    data = file.readlines() 
    for line in data: 
     if x in line: 
      print line 

Dank!

+0

Was Sie bisher versucht haben? Zeigen Sie uns Ihre Anstrengungen, und wir helfen Ihnen, wenn Sie nicht weiterkommen. – mwm314

+0

Was ist das Problem? Der Code sollte funktionieren. –

Antwort

1

Ich denke, das ist das, was Sie wollen:

x = raw_input("Enter word: ") 
with open('dictionary.txt') as file: 
    data = file.read() 

x_pos = data.find(x) 
meaning= None 
if x_pos == 0 or (x_pos != -1 and data[x_pos - 1] == '\n' and data[x_pos - 2] == '\n'): 
    i = x_pos 
    while i < len(data): 
     if data[i] == '\n' and i > 0 and data[i - 1] == '\n': 
      break 
     meaning += data[i] 
     i += 1 

print meaning if meaning else "Not found" 

oder eine regex-basierte Lösung:

import re 


x = raw_input("Enter word: ").strip() 
with open('d.txt') as file: 
    data = '\n\n' + file.read() + '\n\n' 

pattern = r'\n\n(' + x + r' .*?)\n\n' 
pattern_compiled = re.compile(pattern, re.DOTALL) 

res = pattern_compiled.search(data) 
if res: 
    print(res.group(1)) 
else: 
    print('Not found')