2013-08-21 1 views
2

Я пишу скрипт Python. Мне нужно найти текстовый файл для слова, а затем распечатать часть этой строки. Моя проблема в том, что слово не будет точным совпадением в текстовом файле.Как найти слово в текстовом файле и распечатать часть строки с помощью Python?

Например, в приведенном ниже примере текстового файла я ищу слово "color=".

Текст ех Файл:

ip=10.1.1.1 color=red house=big 
ip=10.1.1.2 color=green house=small 
ip=10.1.1.3 animal = dog house=beach 
ip=10.1.1.4 color=yellow house=motorhome 

Если он находит его, он должен печатать новый текстовый файл "color=color", а не всей линии.

Результат бывший Текстовый файл:

color=red 
color=green 
color=yellow 

Мой код:

for line_1 in open(file_1): 
    with open(line_1+'.txt', 'a') as my_file: 
     for line_2 in open(file_2): 
      line_2_split = line_2.split(' ') 
      if "word" in line_2: 
       if "word 2" in line_2: 
        for part in line_2: 
         line_part = line_2.split(): #AttributeError: 'list' object has no attribute 'split' 
         if "color=" in line_part(): 
          print(line_part) 

Я считаю, что нужно использовать регулярные выражения или что-то вроде line.find("color="), но я не уверен, что и как.

Вопрос: Как искать текстовый файл для слова (не точное совпадение) и печатать только определенную часть каждой строки?

ответ

4

Вот один способ - разделить каждую строку пробелов, а затем искать каждую часть для «цвета =»:

with open("textfile.txt") as openfile: 
    for line in openfile: 
     for part in line.split(): 
      if "color=" in part: 
       print part 
+0

Я получаю сообщение об ошибке: «Объект AttributeError:« list »не имеет атрибута« split », потому что я уже разделил строку раньше. Я отредактирую код выше, чтобы показать весь код. – hjames

+0

Это сильно меняется. Какие из 3+ файлов, которые вы открываете, имеют данные, упомянутые выше? – Brionius

+0

file_2 имеет данные – hjames

1

Ну, это не может быть много, но вы всегда можете использовать регулярное выражение:

m = re.search(r'(color\=.+?(?=)|color\=.+?$)', line) 
if m: 
    text = m.group() # Matched text here 
Смежные вопросы