поиск python по тегу - PullRequest
       0

поиск python по тегу

1 голос
/ 25 июня 2010

Мне нужна помощь с программированием на Python: мне нужна команда, которая может искать все слова между тегами из текстового файла.например в текстовом файле есть <concept> food </concept>.Мне нужно найти все слова между <concept> и </concept> и отобразить их.кто-нибудь может помочь, пожалуйста .......

Ответы [ 3 ]

3 голосов
/ 25 июня 2010

Существует замечательная библиотека для обхода HTML / XML с именем BeautifulSoup . С этим:

from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(open('myfile.xml', 'rt').read())
for t in soup.findAll('concept'):
   print t.string
3 голосов
/ 25 июня 2010
  1. Загрузить текстовый файл в строку.
  2. Поиск строки для первого вхождения <concept> с использованием pos1 = s.find('<concept>')
  3. Поиск </concept> с использованием pos2 = s.find('</concept>', pos1)

Слова, которые вы ищете, тогда s[pos1+len('<concept>'):pos2]

1 голос
/ 25 июня 2010

Посмотрите на регулярные выражения.http://docs.python.org/library/re.html

Если вы хотите иметь, например, тег <i>, попробуйте

text = "text to search. <i>this</i> is the word and also <i>that</i> end"
import re
re.findall("<i>(.*?)</i>",text)

Вот краткое объяснение того, как работает findall: он выглядит в заданной строке для данного регулярноговыражение.Регулярное выражение <i>(.*?)</i>:

  • <i> обозначает только открывающий тег <i>
  • (.*?) создает группу и максимально соответствует, пока не доходит допервый
  • </i>, который завершает тег

Обратите внимание, что приведенное выше решение не похоже на

<i> here's a line
break </i>

, поскольку вы просто хотели извлечь слов .

Однако, конечно, это можно сделать:

re.findall("<i>(.*?)</i>",text,re.DOTALL)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...