目录
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自然语言处理实践-核心计算与算法