Python 爬虫4——使用正则表达式筛选内容

        之前说过,使用urllib和urllib2,只是为了获取指定URL的html内容,而对内容进行解析和筛选,则需要借助python中的正则表达式来完成


一、预备知识:

1.正则表达式简述:

        什么是正则表达式?正则表达式就是可以匹配文本片段的模式,最简单的正则表达式就是一个字符串,用于在文本中匹配到此字符串自身。


2.常用正则表达式:

        设计正则表达式的时候有几个注意点如下:

a.特殊符号需要加转移符:如要匹配'china.com',则正则表达式格式应为'china\\.com';

b.字符集使用中括号[]来包含字符串组成字符集):如[a-z]表示匹配从a到z之间的字符;此外,还有一个反转字符集,使用^符号开头:如[^abc]表示匹配除了a、b、c三个字符之外的字符;

c.选择符:如要匹配'python'和'page',写出来的模式为'python|page',其中‘|’是管道符号;

d.子模式:如‘p(ython|age)’;

e.可选项在模式后面加上问好(?),那该模式就变成了可选项,即其可能出现在匹配到的字符串中,但是并非必须的,如r'(http://)?(www.)?shuhe.com'可匹配的结果有:

        http://www.shuhe.com、http://shuhe.com、www.shuhe.com、shuhe.com

f.重复子模式

        (pattern)*:允许模式重复0次或多次

        (pattern)+:允许模式重复1次或多次

        (pattern){m,n}:允许模式重复m~n次

例如:

        r'w*\.python\.org'匹配'www.python.org'、'.python.org'、'wwwwww.python.org'

        r'w+\.python\.org'匹配'w.python.org';但不匹配'.python.org'

        r'w{3,4}\.python\.org'只能匹配'www.python.org'和'wwww.python.org'


二、re模板的使用:

        在python中封装了一些常用的正则表达式在re模板中,使用时只需将该模板引入到当前项目中即可:

        

        上述是re中常用的正则表达式,使用步骤为:

        1.先将正则表达式的字符串形式编译为Pattern实例;

        2.然后使用Pattern实例处理文本并获得匹配结果(一个Match实例);

        3.最后使用Match实例获得信息,进行其他的操作。

例如:

# encoding: UTF-8
import re
 
# 将正则表达式编译成Pattern对象
pattern = re.compile(r'hello')
 
# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
match = pattern.match('hello world!')
 
if match:
    # 使用Match获得分组信息
    print match.group()
 
### 输出 ###
# hello
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用Python中的re模块来筛选AABB式的词语。下面是一个示例代码: ```python import re text = "This is an AABB example sentence. I have another sentence with AABB words in it." pattern = r'\b([a-zA-Z])\1([a-zA-Z])\2\b' aabb_words = re.findall(pattern, text) print(aabb_words) ``` 在这个示例代码中,我们使用正则表达式的\b表示单词边界,([a-zA-Z])\1表示匹配两个相同的字母,([a-zA-Z])\2表示匹配另外两个相同的字母,然后用\b表示单词边界来结束整个匹配。最后使用re.findall()函数获取所有匹配的结果。 输出结果为: ```python [('A', 'A'), ('A', 'B'), ('B', 'B'), ('A', 'A'), ('A', 'B'), ('B', 's')] ``` 这个结果表示在文本中匹配到了6个AABB式的词语。 ### 回答2: 要使用Python筛选AABB式的词语,可以使用正则表达式来匹配符合该模式的词语。 首先,需要 import re 模块来使用正则表达式函数。然后,可以使用 re.compile() 函数来编译正则表达式。针对AABB式的词语,可以使用如下的正则表达式模式:r'(\w)\1(\w)\2' 接下来,可以定义一个函数,将待筛选的词语作为参数传入。在函数内部,可以使用 re.findall() 函数来找到所有与正则表达式模式匹配的词语,并将其返回。 下面是一个示例代码,演示了如何使用正则表达式筛选AABB式的词语: ```python import re def filter_words(words): pattern = re.compile(r'(\w)\1(\w)\2') matched_words = re.findall(pattern, words) return matched_words words = "兔兔猫猫狗狗鸟鸟" result = filter_words(words) print(result) # 输出 ['兔兔猫猫', '狗狗鸟鸟'] ``` 以上代码中,待筛选的词语为"兔兔猫猫狗狗鸟鸟",使用 filter_words() 函数来筛选,并将结果打印输出。结果为 ['兔兔猫猫', '狗狗鸟鸟'],符合AABB式的词语。 希望这个回答对您有帮助! ### 回答3: 在Python中,可以使用正则表达式筛选出满足AABB式的词语。 首先,我们需要导入Python中的re模块,它提供了正则表达式的支持。 接下来,我们可以定义一个正则表达式模式,用来匹配满足AABB式的词语。模式可以使用括号来分组匹配。 例如,我们可以使用以下正则表达式模式来筛选AABB式的词语: pattern = r'(\w)\1(\w)\2' 在上述正则表达式中,\w表示匹配任意字母或数字字符,\1表示匹配第一个分组,\2表示匹配第二个分组。 然后,我们可以通过使用re模块的findall()函数来找到所有匹配的词语。该函数接受两个参数:正则表达式模式和待匹配的字符串。它会返回一个包含所有匹配项的列表。 例如,我们可以使用以下代码来找到满足AABB式的词语: import re text = "ABAB CCDD AAEE AABB" pattern = r'(\w)\1(\w)\2' result = re.findall(pattern, text) 最后,我们可以打印出找到的匹配项: for word in result: print(word) 运行以上代码,输出结果为: ('A', 'B') ('C', 'D') ('A', 'A') ('A', 'B') 这些就是使用Python中的正则表达式筛选AABB式的词语的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值