2010-06-25 118 views
1

我需要帮助python编程: 我需要一个命令,可以搜索文本文件中标签之间的所有单词。例如 在文本文件中有<concept> food </concept>。我需要搜索<concept></concept>之间的所有单词并显示它们。 任何人都可以帮忙.......蟒蛇搜索标签

回答

3
  1. 将文本文件加载到一个字符串中。
  2. 使用pos2 = s.find('</concept>', pos1)

你所寻求的话是那么s[pos1+len('<concept>'):pos2]

+1

这种方法没有考虑注释和标记与空格考虑如果问题的作者暗示XML – nkrkv 2010-06-25 07:21:53

+0

+1为了简单 – jensgram 2010-06-25 07:22:42

1

看一看正则表达式搜索使用pos1 = s.find('<concept>')

  • 搜索<concept>中第一次出现的字符串</concept>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) 
    
  • 3

    没有为HTML/XML一个伟大的图书馆中横过命名BeautifulSoup。有了它:

    from BeautifulSoup import BeautifulStoneSoup 
    soup = BeautifulStoneSoup(open('myfile.xml', 'rt').read()) 
    for t in soup.findAll('concept'): 
        print t.string