2013-07-07 4 views
1

Мне было интересно, может ли кто-нибудь помочь мне. Я новичок в Python. То, что я хочу сделать, это набрать буквы, и программа должна найти их в текстовом файле со списком объектов. Он должен распечатать объект, содержащий все буквы, не имеющие значения. Например, у меня есть текстовый файл с 5 словами:Поиск писем в текстовом файле Python

yellow 
morning 
sea 
soiberg 
sand 

Я хочу программу, чтобы показать все слова, которые содержат буквы "goi".

Результат:

morning 
soiberg 

То, что я в данный момент заключается в следующем:

with open('d:\lista.txt', 'r') as inF: 
    l = input("Buscar: ") 
    for line in inF: 
     if l[0] in line: 
      if l[1] in line: 
       if l[2] in line: 
       print(line) 

Но что, если я хочу, чтобы найти только 2 буквы или 5 или 7. Я не знаю, что сделать

ответ

2

Вы можете использовать all():

with open(r'd:\lista.txt', 'r') as inF: 
    l = input("Buscar: ") 
    for line in inF: 
     if all(c in line for c in l) 
      #code 

Примеры:

>>> strs = "goi" 
>>> line = "morning" 
>>> all(c in line for c in strs) 
True 
>>> line = "soiberg" 
>>> all(c in line for c in strs) 
True 
>>> line = "sea" 
>>> all(c in line for c in strs) 
False 

Обратите внимание, что вы должны использовать сырые строки для путей файлов Windows, в противном случае что-то вроде '\t' в вашем пути к файлу будут преобразованы в ушке, и вы получите сообщение об ошибке.

r'd:\lista.txt' 
+0

Большое спасибо. Это прекрасно работает – user2558831

0

Я бы для использования набора и построения генератора через соответствующую строку, затем Перебор что:

with open('input') as fin: 
    letters = set(raw_input('Buscar: ')) 
    matches = (line for line in fin if not letters.difference(line.strip()) 
    for match in matches: 
     # do something 
0

Это еще один способ с помощью простых инструментов:

with open(r'd:\lista.txt', 'r') as inF: 
    l = input("Buscar: ") 
    for line in inF: 
     counter=0 
     for letter in l: 
      if letter in line: 
       counter+=1 
     if counter==len(l): 
      print(line) 
Смежные вопросы