IT开发知识库 - 立志做成最实用的开发手册!
C++ C语言 C++ Builder VB PB Ruby/Rails perl/python 编程 其他开发语言
当前位置: 开发知识库 > 开发语言/框架 > perl/python > Python中的re.search跟re.findall之间的区别

Python中的re.search跟re.findall之间的区别

时间:2015-07-28来源:未知 作者:admin点击:
Python中的re.search和re.findall之间的区别 参考博客:http://www.crifan.com/python_re_search_vs_re_findall/ 在这里,我想说一下我目前遇到的问题 这是一个本地的文件 text.txt html head title极客学院爬虫测
Python中的re.search和re.findall之间的区别

参考博客:http://www.crifan.com/python_re_search_vs_re_findall/

在这里,我想说一下我目前遇到的问题

这是一个本地的文件 text.txt

<html>
  <head>
    <title>极客学院爬虫测试</title>
  </head>
  <body>
    <div class="topic"><a href="http://jikexueyuan.com/welcome.html">欢迎参加《Python定向爬虫入门课程》</a>
      <div class="list">
        <ul>
          <li><a href="http://jikexueyuan.com/1.html">这是第一条</a></li>
          <li><a href="http://jikexueyuan.com/2.html">这是第二条</a></li>
          <li><a href="http://jikexueyuan.com/3.html">这是第三条</a></li>
        </ul>
      </div>
    </div>
  </body>
</html>
当我用re.findall()来获取它的文本内容,即
 <li><a href="http://jikexueyuan.com/1.html">这是第一条</a></li>
中<a>标签直接的内容时,用了如下代码,采用先打后小原则:
<pre name="code" class="python">text_field = re.findall('<ul>(.*?)</ul>',html,re.S)
text = re.findall('">(.*?)</a></li>',text_field,re.S)for each in text: print each


应该没问题的,但是报了这样的错

很无解,后来尝试了

1.

text_field = re.findall('<ul>(.*?)</ul>',html,re.S)[0]
2.
text_field = re.search('<ul>(.*?)</ul>',html,re.S).group(1)<pre style="font-family: Consolas; font-size: 10.5pt; background-color: rgb(255, 255, 255);">这两种方式都正确


但是我并不懂。后来看到开头那篇博客的最后提到的,我很有同感。此时,我猜想,当findall得到的元素是一个元组,但是这个元组仅有一个时,需要像search那样给定位置。

但是现在我不知道具体是什么情况时要这样写。希望哪位大神不吝赐教!


版权声明:本文为博主原创文章,未经博主允许不得转载。

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
相关内容
推荐内容