Day1-正则表达式在NLP中的基本应用

目录

1:Anaconda常用命令

2:正则表达式应用

2.1 匹配字符串

2.2 转义符

2.3 抽取文本中的数字


1:Anaconda常用命令

conda --version

conda info

conda list 已安装的包

conda install package_name(package_name:包名)

例如:

conda install numpy

安装多个

conda install numpy scipy pandas

安装指定版本

conda install numpy=1.10

卸载

conda remove package_name

更新

conda update package_name

更新多有

conda update --all

2:正则表达式应用

2.1 匹配字符串

使用re模块实现正则表达式

使用re的方法:re.search(regex,string) 实现

例1 获取包含"爬虫"这个关键字的句子

import re
text_string = "文本最重要的来源无疑是网络。我们要把网络中的文本获取形成一个文本数据库。利用一个爬虫获取到网络中的信息。爬取的策略有广度爬取和深度爬取。根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分。"
regex = '爬虫'
p_string = text_string.split("。")
for line in p_string:
    if  re.search(regex, line) is not None:
        print(line)

输出结果:

利用一个爬虫获取到网络中的信息
根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分

例2 匹配任意一个字符

符号

含义

.

匹配任意一个字符

例如

正则表达式

可以匹配

不可匹配

"a.c"

"abc","branch"

"add","crfdadnh"

"..t"

"bat","out"

"it","table"

演示代码:

import re
text_string = "文本最重要的来源无疑是网络。我们要把网络中的文本获取形成一个文本数据库。利用一个爬虫获取到网络中的信息。爬取的策略有广度爬取和深度爬取。根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分。"
# 修改此处
regex = '爬.'
p_string = text_string.split("。")
for line in p_string:
    if  re.search(regex, line) is not None:
        print(line)

代码基本不变,把regex中的“爬虫” 修改为 “爬.”即可。所以“爬虫”和“爬去”都匹配。

输出结果:

利用一个爬虫获取到网络中的信息
爬取的策略有广度爬取和深度爬取
根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分

例3 匹配起始和结尾字符串

符号

含义

^

匹配开始的字符串

$

匹配结尾的

例如

import re

text_string = "文本最重要的来源无疑是网络。我们要把网络中的文本获取形成一个文本数据库。利用一个爬虫获取到网络中的信息。爬取的策略有广度爬取和深度爬取。根据用户的需求,爬虫可以有主题爬虫和通用爬虫之分。"
regex = '^文本'
p_string = text_string.split("。")
for line in p_string:
    if  re.search(regex, line) is not None:
        print(line)

输出:

文本最重要的来源无疑是网络

例4 使用中括号匹配多个字符

符号

含义

[]

匹配多个字符串

例如:

[bcr]at 匹配==>> bat cat rat

 

import re
text_string = ['重要的今年第七号台风23日登陆广东东部沿海地区','上海发布车库销售监管通知:违规者暂停网签资格','紧要的中国对印连发强硬信息,印度紧切需要结束对峙']
regex = '[重紧]..'
for line in text_string:
    if  re.search(regex, line) is not None:
        print(line)
    else:
        print('not match')

输出:

重要的今年第七号台风23日登陆广东东部沿海地区
not match
紧要的中国对印连发强硬信息,印度紧切需要结束对峙

2.2 转义符

r"\\" == "\\\\"

例如:"\\d" 可以写成 r"\d"

例子:

import re
if re.search("\\\\","I have one nee\dle") is not None:
    print("match  it")
else:
    print("not match")
# 使用r"\\" 转换 "\\\\"
if re.search(r"\\","I have one nee\dle") is not None:
    print("match  it")
else:
    print("not match")

2.3 抽取文本中的数字

1:通过正则表达式匹配年费

"[0-9]"代表从0到9的所有数字

"[a-z]"代表从a-z的所有小子字母

import re

strings = ['War of 1812', 'There are 5280 feet to a mile', 'Happy New Year 2016', 'What fuck 2021']
    year_strings = []
    for string in strings:
        if re.search('[1-2][0-9]{3}', string):
            year_strings.append(string)
    print(year_strings)

输出结果:

['War of 1812', 'Happy New Year 2016', 'What fuck 2021']

2:抽取所有年份

import re
year_string = '2012 是一个很不错的年,但是2020却是一个让人很不愉快的一年。'
years = re.findall('[2][0-9]{3}',year_string)
print(years)

输出结果:

['2012', '2020']

参考文献:python自然语言处理实践-核心计算与算法

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值