关于我们
+关于FlyPython
FlyPython是提供一站式Python编程学习的组织,我们致力于为用户提供高效,有趣的学习环境,打造专注于Python的中文学习社区。
+联系我们
客服&合作: 微信号 flypython
+公众号二维码
FlyPython
FlyPython训练营
diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..cff2022 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +flypython.com \ No newline at end of file diff --git a/archives/2018/01/index.html b/archives/2018/01/index.html new file mode 100644 index 0000000..20e125d --- /dev/null +++ b/archives/2018/01/index.html @@ -0,0 +1,127 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + +
+ + 关于飞蟒Python +
+
+ + 关于飞蟒Python +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 介绍Python语言新的特性 +
+
+ + 介绍Python语言新的特性 +
+
+ + Python自然语言处理教程 +
+
+ + Python入门教程 +
+
+ + Python入门教程 +
+
+ + Python入门教程 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 介绍Python语言新的特性 +
+
+ + 介绍Python语言新的特性 +
+
+ + Python自然语言处理教程 +
+
+ + Python入门教程 +
+
+ + Python入门教程 +
+
+ + Python入门教程 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 关于飞蟒Python +
+FlyPython是提供一站式Python编程学习的组织,我们致力于为用户提供高效,有趣的学习环境,打造专注于Python的中文学习社区。
+客服&合作: 微信号 flypython
+FlyPython
FlyPython训练营
上周,Python3.8版本发布,到底带来了哪些新的特性呢?我们应该在哪些场景中使用这些特性呢?本周,我们通过几篇文章来告诉你答案。
+
首先,我们并不推荐安装最新版本到常用的开发环境中,你可以使用虚拟环境或者docker来尝鲜。
+官方安装包
+网址:https://www.python.org/downloads/release/python-380/
也可以使用docker
+拉取镜像命令docker pull python:3.8

赋值表达式被叫做海象运算符,因为它的形状像海象。如果熟悉go语言的话,会对这个表达式会熟悉。
+赋值表达式的语法是
+1 | name := expression |
和赋值语句 = 作用差不多,非必不可少,但可以简化代码。
1 | >>> a = False |
此例子赋值之后,后续还需要使用变量。赋值表达可用于简化代码,提高可读性。
+1 | >>> inputs = list() |
使用赋值操作符时:
+1 | >>> inputs = list() |
此例子,省略了一条语句,可读性上升。
+再来一个例子
+最初版本
+1 | a = [1,2,3,4] |
我们改写为:
+改进版本
+1 | a = [1,2,3,4] |
新特性重写:
重写版本
1 | a = [1,2,3,4] |
从上面可以看到,重写版本和改进版本的不同在于:
+1 | n = len(a) |
与
+1 | if (n:=len(a)) > 3: |
这两个版本的区别在于,:=和=是补充关系并不是替换关系,下面的例子可以看到官方的意图。
1 | x = 5 |
由上面可以看出:=和=是互补关系,在应该使用:=的时候才可以使用:=。
Python语言的一致性,不管是专家还是新手,在同一个问题上都应该有一致的写法,然后这就形成了最pythonic的写法。
+最后带来,新特性带来的最佳实践
+1 | # 简化 os.fork |
Positional-only parameters官方翻译为仅限位置形参,也可以理解为只接受位置参数。意思就是,它只是一个位置参数,不接受关键字传参。
+语法:
+1 | def funx(a,b,/): # / 指明,前面的a,b参数是仅限位置形参 |
函数形参语法/ 用来指明某些函数形参必须使用仅限位置而非关键字参数
其实,Python内置的很多C函数接口都是这种形式,比如
+1 | >>> import builtins |
很多函数后面都有 /来表明,左边的这些参数只接受位置参数。
1 | >>> divmod(1,2) |
指定关键字的参数会报语法错误,它的用途就是强制使用者用位置参数来传参。
+1 | >>> def f(a,b,/,**kwargs): |
由于在 / 左侧的形参不会被公开为可用关键字
这里的a,b 为仅限位置参数,最后a,b会被赋值了两次。
位置参数赋值一次,关键字参数赋值一次,关键字参数以kwargs字典的形式存在,需要通过 kwargs['a'],kwargs['b']访问。
现在我们来看一下,添加了仅限位置形参之后的函数参数形式
+1 | def name(positional_only_parameters, /, positional_or_keyword_parameters, |
包括了仅限位置形参, /, 位置形参或者关键字参数 ,*,仅限关键字参数。

最后,我们可以定义以下形式的函数
+1 | def name(p1, p2, /, p_or_kw, *, kw): |
使用 Python 生成《红楼梦》词云
+
本文介绍如何使用python绘制《红楼梦》的词云。
+++“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
+
“词云”——网络内容发布新招式 .人民网
本文建议在电脑上打开,边阅读边操作。
+可以在cmd窗口输入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

## 2.准备红楼梦文本
文本可以用下面链接下载
`https://github.com/flypythoncom/flypython/blob/master/wordcloud_hlm_seg.txt`
或者可以自己写代码,对文本进行清洗,分词。
这里需要安装jieba分词,`pip install jieba`
``` python
import jieba
import re
special_character_removal = re.compile(r'[,。、【 】“”:;()《》‘’{}?!⑦%>℃.^-——=&#@¥『』]', re.IGNORECASE)
fw=open("hlm_seg.txt","w",encoding="utf-8")
with open('hlm.txt',encoding="utf-8") as fp:
for line in fp:
l = special_character_removal.sub('', line.strip())
words=jieba.cut(l)
t=" ".join(words)
fw.write(t)
fw.write("\n")
fw.close()
1 | from os import path |
结果:
+
后台回复“词云”获得完整运行代码
+人生苦短,我用python早下班。如果觉得不错,对你工作中有帮助,请加我微信公众号flypython,我们一起探讨python相关问题
+ 
++【极简Python 自动化办公】专栏是介绍如何利用python办公,减少工作负荷。篇幅精炼,内容易懂,无论是否有编程基础,都非常适合。
+
在上次文章中,我们学习了【用python读取excel】,这次我们继续学习Python写excel吧!
+
本文大约需要15分钟,建议在电脑上打开,边阅读边操作。
+与上篇文章类似,需要在cmd窗口输入1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
## 2.准备写入表格内容
这步很简单,只要想好输入内容即可,这里设计了一个简单的表格内容作为写入内容(目前这个内容还不存在)。
| 序号 | 学号 |年龄 |
| --- | --- |--- |
| 张三 | 20190901 |11|
| 李四 |20190902|12 |
| 小明 | 20190903 |13 |
## 3.编写python代码并运行
新建一个writeexcel.py文件,用记事本或其他文本编辑工具打开。
本次写入excel的思路是,新建文件->指定行列->写入内容。
在文本编辑工具中输入如下代码,保存并关闭。
import xlwt
+f = xlwt.Workbook()
sheet1 = f.add_sheet(‘sheet1’,cell_overwrite_ok=True)
column = [“姓名”,”学号”,”年龄”]
name = [“张三”,”李四”,”小明”]
school_code = [20190901,20190902,20190903]
+age = [11,12,13]
+sheet1.write(0,0,column[0])#第1行第1列
sheet1.write(0,1,column[1])#第3行第3列
sheet1.write(0,2,column[2])#第2行第2列
sheet1.write(1,0,name[0])#第2行第1列
sheet1.write(1,1,school_code[0])#第2行第1列
sheet1.write(1,2,age[0])#第3行第1列
sheet1.write(2,0,name[1])
sheet1.write(2,1,school_code[1])
sheet1.write(2,2,age[1])
sheet1.write(3,0,name[2])
sheet1.write(3,1,school_code[2])
sheet1.write(3,2,age[2])
f.save(‘test1.xls’)
+1 |
|
import xlrd
import xlwt
wb = xlrd.open_workbook(“test1.xls”)#打开文件
sheet1 = wb.sheet_by_index(0)#获取第一个表格
column = []#列名
+data=[]
+#获取列名
column.append(sheet1.cell(0,0).value)#姓名
column.append(sheet1.cell(0,1).value)#学号
column.append(sheet1.cell(0,2).value)#年龄
for i in range(1,sheet1.nrows):#sheet1.nrows 行数
coldata=[]
coldata.append(sheet1.cell(i, 0).value)#姓名
coldata.append(int(sheet1.cell_value(i, 1)))#学号
coldata.append(sheet1.cell(i, 2).value)#年龄
data.append(coldata)
f = xlwt.Workbook()
sheetw = f.add_sheet(‘sheet1’,cell_overwrite_ok=True)
sheetw.write(0,0,column[0])#姓名
sheetw.write(0,2,column[2])#学号
sheetw.write(0,1,column[1])#年龄
for i in range(len(data)):
d=data[i]
sheetw.write(i+1, 0, d[0]) # 第2行第1列
sheetw.write(i+1, 1, d[1]) # 第2行第1列
sheetw.write(i+1, 2, d[2]) # 第3行第1列
f.save(‘test2.xls’)
+```
+运行后,会生成一个test2.xls,与test1.xls一模一样。
+人生苦短,我用python早下班。如果觉得不错,对你工作中有帮助,请加我微信公众号flypython,我们一起探讨python相关问题
+ 
++【极简Python 自动化办公】专栏是介绍如何利用python办公,减少工作负荷。篇幅精炼,内容易懂,无论是否有编程基础,都非常适合。
+
在上次文章中,我们学习了【用python写入excel】,这次我们学习Python写word文档吧!
+场景:
有时候,办公室需要按模版生成的固定的文件,模板是固定的,只是每次需要替换信息。如下图的收入证明,模版中所有标黄的都是需要替换的信息:
如果手工来做这个事情,每次至少需要10分钟的时间。假如每天要开15份,则至少要花2个半小时,而且手工编辑word很容易出错。
可不可用python写个程序,解决这个问题呢?
+结论当然是肯定的!
+本文大约需要15分钟,建议在电脑上打开,边阅读边操作。
+与上篇文章类似,需要在cmd窗口输入pip install python-docx。
word模板如上所示,(可以不需要标黄),这里注意,需要替换的文字或数字位置,用”XXXX”来固定替代。保存为个人收入证明.docx。
| 名称 | +内容 | +
|---|---|
| 姓名 | +张三 | +
| 身份证号 | +104111199009103531 | +
| 职务 | +工程师 | +
| 工作年限 | +10 | +
| 月收入 | +10000 | +
| 大写 | +壹万元整 | +
| 联系人 | +李四 | +
| 单位名称 | +格物致知股份有限公司 | +
| 单位地址 | +珠海市横琴新区宝华路6号105室-67425 | +
| 联系电话 | +0756-8627528 | +
在word模板的同级目录,新建一个writeword.py文件,用记事本或其他文本编辑工具打开。
+编程思路:
+在文本编辑工具中输入如下代码,保存并关闭。
+1 | from docx import Document |
在同级目录,打开cmd,运行writeword.py python writeword.py
生成结果如下:张三_个人收入证明.docx
这里生成了对应word文件,但也有几个问题:
+如果您看过我们之前的2篇用python读写excel的文章,您肯定就会想到,可以利用读取excel表格里的内容,批量生成对应的word文档。对,让我们继续吧!
+这里再准备一个excel文件,将需要批量写入的信息写在excel中,并保存为income.xlsx在同级目录,如下图:
+
修改python 文件writeword.py
+1 | from docx import Document |
运行后,输入结果:
+

人生苦短,我用python早下班。如果觉得不错,对你工作中有帮助,请加我微信公众号flypython,我们一起探讨python相关问题
+ 
在工作中,常常会遇到文档格式的转换。如果数据不多,手工转换就可以。如果是大量文档,那我们应该怎么办呢?
+今天我们将使用Python来批量处理文档转换的问题.
+unoconv是一款跨平台的工具,用于格式转换,支持命令行。底层实现是依赖于开源的LibreOffice/OpenOffice。
+项目地址:https://github.com/unoconv/unoconv
+文档地址: http://dag.wiee.rs/home-made/unoconv/
+根据unoconv的文档介绍,支持上百种文档格式的转换,已经覆盖了绝大部分的需求。
+安装unoconv比较繁琐,而且需要针对中文进行进一步的字符集配置。我们可以选择别人已经集成好的服务来进行操作,在这里我们选择了docker-unoconv-webservice项目。
+项目地址为: https://github.com/zrrrzzt/docker-unoconv-webservice
+查看项目的README,接口如下:
+curl --form file=@myfile.docx http://localhost/unoconv/pdf > myfile.pdf
我们使用下列命令,先把项目的镜像pull下来
+docker pull zrrrzzt/docker-unoconv-webservice
然后启动命令如下:
+docker run -d -p 80:3000 zrrrzzt/docker-unoconv-webservice
服务在80端口上提供服务,如果80端口被占用,可以调整为其他的端口
+确认服务正在运行:
+docker ps | grep zrrrzzt/docker-unoconv-webservice
1 | [flypython] docker ps | grep zrrrzzt/docker-unoconv-webservice |
从docx转换为pdf:
+curl --form file=@demo.docx http://localhost/unoconv/pdf > demo.pdf
1 | [flypython] curl --form file=@demo.docx http://localhost/unoconv/pdf > demo.pdf |
Python批量请求的思路是,把需要转换的文档发送到服务器,服务器会返回转换后的格式,我们保存为文件就可以了。
+1 | def post_file(url,path): |
好了,更多类型转换,更完整的应用需要你根据业务来完善,这次的介绍就到这里了。demo完整代码在github上,点击原文可以获取。
+https://github.com/flypythoncom/flypython/blob/master/convert.py
+ +++【极简Python 自动化办公】专栏是介绍如何利用python办公,减少工作负荷。篇幅精炼,内容易懂,无论是否有编程基础,都非常适合。
+
在日常的工作中,处理PDF是最平常不过的事情了。今天带来极简Python自动化办公系列之使用Python提取Pdf文字和表格,希望能够在PDF处理上帮到你。
+这次我们准备了一个pdf测试文件,内容如下:
+
pdf中包括了2页,有文字,图片和表格,覆盖了大部分pdf的场景。
+Pdfplumber是一个可以处理pdf格式信息的库。它可以查找关于每个文本字符、矩阵、和行的详细信息,也可以对表格进行提取并进行可视化调试。
+官方repo:
https://github.com/jsvine/pdfplumber
安装:pip install pdfplumber
1 | import pdfplumber |
结果:
+1 | {'fontname': 'CRSMRF+PingFangTC-Semibold', 'adv': Decimal('1.000'), 'upright': 1, 'x0': Decimal('57.000'), 'y0': Decimal('751.840'), 'x1': Decimal('81.000'), 'y1': Decimal('779.776'), 'width': Decimal('24.000'), 'height': Decimal('27.936'), 'size': Decimal('27.936'), 'object_type': 'char', 'page_number': 1, 'text': '关', 'top': Decimal('62.224'), 'bottom': Decimal('90.160'), 'doctop': Decimal('62.224')} |
格式化之后:
+
1 | { |
1 | #!/usr/bin/env python3 |

1 | 关于我们 |
1 | #!/usr/bin/env python3 |

1 | 分类 书名 |
pdfplumber的接口还是很容易的,如果只是需要提取文字,几行代码就可以提取到。如果是表格并没有提取出来或者错误的提取了非表格的内容,你需要在提取表格时加入table_settings参数来指定表格的设置。
这次的demo中,图片并没有提取出来,pdf图片的提取会放到下一篇文章,敬请期待。
+人生苦短,我用python早下班。如果觉得不错,对你工作中有帮助,可以长按下列二维码关注我们的公众号。
+ 
++【极简Python 自动化办公】专栏是介绍如何利用python办公,减少工作负荷。篇幅精炼,内容易懂,无论是否有编程基础,都非常适合。
+
在上次的文章中,我们从PDF中提取了文字和表格,这次我们需要提取图片。
+还是先来看看我们上次的测试例子
+
这次我们要提取第一页的二维码图片。
+pymupdf是mupdf的Python绑定,而今天我们要使用的fitz是pymupdf的子模块。需要的时候,使用pip安装。
+pip install pymupdf
导入的时使用import fitz导入模块。
更多信息可参考pymupdf的文档:https://pymupdf.readthedocs.io/en/latest/intro/
提取图片的思路是通过正则表达式找到图片对象,然后保存为图片格式。
+1 | #!/usr/bin/env python3 |
运行程序结果:
+1 | [pdf] python3 pdf_img.py |
在img目录中,已经存在了我们需要的文件
+
pymupdf的使用,今天就简单介绍到这里。更多的功能请参考pymupdf文档。
+下一篇,我们将带来pdf转换为图片的讨论。
+人生苦短,我用python早下班。如果觉得不错,对你工作中有帮助,可以长按下列二维码关注我们的公众号。
+ 

why python?
+++你可能听说过python
+Python入门相对容易又可以干很多事(网站,>运维,数据,爬虫等),是一门方便的工具语言。
+
2019年8月TIOBE排名显示Python已经名列第3,仅次于java和c,并且还在快速增长中。
对于数据分析和机器学习,Python是首选编程语言。python有众多数据分析工具,知名数据分析比赛网站kaggle,90%以上的竞赛代码都是用python写成。大数据平台如spark、flink,python有完整的支持api可调用。
+对于网站开发,Python的生态环境也可以支撑起重量级的产品。
国外的Youtube,Instagram,Pinterest,Reddit,Dropbox,Disqus, Quora等知名应用一开始都是基于Python构建,国内的豆瓣,知乎,果壳,饿了么,等初期在也是Python应用的典型。
对于爬虫,则想不到比python更方便、更通用的的语言了。Python极其丰富的生态,诸如Request、Beautiful Soup、Scrapy、PySpider等第三方库,加上简洁易上手的语法,分分钟就能让你写出一个爬虫来。
+此外,还有机器学习、人工智能、科学计算、IT运维等领域,Python都是极其方便顺手的工具,更重要的是,永远开源,免费。
+在it行业飞速发展的今天,在数据成为it命脉的时代,python的重要意义越来越不言自明。学习python,不仅仅是一门可以调用数据结构和算法的语言,在学会python的同时,可以同时学会爬取互联网海量资源,学会自动化分析互联网海量数据,学会制作展示宣传的网站,学会使用人工智能预测和改变世界。
+学习一门语言,得到多种技能,以及大数据的思维方式,何乐而不为呢。
+Python有多火?大多数IT研发岗位,都需要Python程序员;甚至许多非研发岗位,纷纷在JD中给出精通Python技能者优先的字样。
+

对于爱好者来说, python上手非常容易,学习曲线非常平滑。基本的例子,几行代码都能完成。
+python代码环境安装几乎是傻瓜式的,不像java要考虑众多库的配置和解决冲突。如果有编程的基础甚至只需要几小时就能上手,即使没有基础的小白,通过努力,7-10天,每天1小时,也可以快速掌握基本编程技巧。
+Python官网
Python.org
廖雪峰的Python教程
https://www.liaoxuefeng.com/
简明python教程
http://www.kuqin.com/abyteofpython_cn/
重点推荐书籍:《Python 基础教程》
+
知乎评价:
其他入门书籍:
+(我们搜集了一些网上的电子书版本,关注公众号,回复”python”获取)
+当然,英文著作虽然经典,但涉及领域众多,概念多,信息量大,不适合速成。网上的资料丰富,但也鱼龙混杂。
+以 “Python入门” 为关键字搜索出的结果成千上万。不少小白选手难免会东一榔头西一棒槌,最终看了很多文章,却仍没跨过新手那道门槛。
+我们这里有一个python的入门课程,帮你把需要掌握的python基础知识都融汇贯通在小篇幅中。我们提供了很多有趣的实践项目,并且可以进群,互助学习,遇到困难有人来解答。
+加群请关注公众号,并回复“训练营”

++11 月 15 日,SOHO 中国董事长潘石屹在微博上宣布,开始学习一门新的语言 Python,这也是今天给自己人生的礼物。
+

什么鬼?房地产大佬要学python?
+
潘石屹,一位成功的房地产开发商老板,第一专业是石油方面的,63年出生,年龄都超过了55岁,这些描述怎么着都和编程沾不上边啊。然而,最近他非常高调地表示,要学习一款编程语言。
虽然我不同意他的有些观点,不过他的跨界,不给自己设限的态度是还是值得学习的。
大佬都忙着学编程,这让我们35岁左右的专业程序员们非常惭愧啊(难道非得财务自由以后才能学python么)。

潘石屹学python肯定不是为了转行找工作,肯定也不是为了爬取全网美女图片,他在微博里详细阐述了我们为什么要学习Python语言。
+
我们为什么要学习python——使用范围广
01.数据分析
对于数据科学和机器学习,Python是首选编程语言。python有众多数据分析工具,知名数据分析比赛网站kaggle,90%以上的竞赛代码都是用python写成。大数据平台如hadoop、spark、flink、beam,python有完整的支持api可调用。
+02.网站开发
+对于网站开发,Python的生态环境也可以支撑起重量级的产品。国外的Youtube,Instagram,Pinterest,Reddit,Dropbox,Disqus, Quora等知名应用一开始都是基于Python构建,国内的豆瓣,知乎,果壳,饿了么,等初期在也是Python应用的典型。
+03.爬虫
+对于爬虫,则想不到比python更方便、更通用的的语言了。Python极其丰富的生态,诸如Request、Beautiful Soup、Scrapy、PySpider等第三方库,加上简洁易上手的语法,分分钟就能让你写出一个爬虫来。
+此外,还有机器学习、人工智能、科学计算、IT运维等领域,Python都是极其方便顺手的工具,更重要的是,永远开源,免费。
+Python的就业前景
在it行业飞速发展的今天,在数据成为it命脉的时代,python的重要意义越来越不言自明。学习python,不仅仅是一门可以调用数据结构和算法的语言,在学会python的同时,可以同时学会爬取互联网海量资源,学会自动化分析互联网海量数据,学会制作展示宣传的网站,学会使用人工智能预测和改变世界。学习一门语言,得到多种技能,以及大数据的思维方式,何乐而不为呢。
Python有多火?大多数IT研发岗位,都需要Python程序员;甚至许多非研发岗位,纷纷在JD中给出精通Python技能者优先的字样。
+Python的学习曲线
对于爱好者来说, python上手非常容易,学习曲线非常平滑。基本的例子,几行代码都能完成。python代码环境安装几乎是傻瓜式的,不像java要考虑众多库的配置和解决冲突。如果有编程的基础甚至只需要几小时就能上手,即使没有基础的小白,通过努力,7-10天,每天1小时,也可以快速掌握基本编程技巧。
Python的学习资料
+Python官网
+Python.org
+廖雪峰的Python教程
+ +简明的python教程
+http://www.kuqin.com/abyteofpython_cn/
+重点推荐书籍:
+《Python 基础教程》
+知乎评价:
+其他入门书籍:
+Head First Python
+Dive Into Python
+Python 核心编程
+深入理解 Python
+Python 标准库
+Python 编程指南
+(我们搜集了一些网上的电子书版本,关注公众号,回复”python”获取)
+当然,英文著作虽然经典,但涉及领域众多,概念多,信息量大,不适合速成。网上的资料丰富,但也鱼龙混杂。
+以 “Python入门” 为关键字搜索出的结果成千上万。不少小白选手难免会东一榔头西一棒槌,最终看了很多文章,却仍没跨过新手那道门槛。
+我们这里有一个python的入门课程,帮你把需要掌握的python基础知识都融汇贯通在小篇幅中。我们提供了很多有趣的实践项目,并且可以进群,互助学习,遇到困难有人来解答。
+加群请加个人微信号flypython。
+人生苦短,我用python早下班。如果觉得不错,对你工作中有帮助,动动手指分享给更多人哦。
+ +flypython群里有同学问我,如何从大量格式不确定的word文档抽取姓名、电话号码、邮箱等信息存入excel表格。通过之前我们的文章,他已经学会读取和写入文档和表格,但就是无法处理格式不确定的文档。这里介绍的正则方法,可以帮助他解决这个问题。
+15分钟内让你真正明白正则表达式是什么,并且让你可以在自己的python程序里正确使用它。
+你将学会:
+假设程序从word或者excel读取了一串字符串,字符串中有一部分是电话号码,现在需要完整提取这个电话号码。
+1 | import re |
输出:
+
解释:"[0-9]+"是正则表达式,意思是匹配0-9的数字,"+"
表示可以匹配1次-多次,reg.findall表示从后面的字符串里找到所有的匹配值。
字符集,又叫元字符,就是用一些特殊符号表示特定种类的字符或位置。
+| 代码 | +说明 | +
|---|---|
. |
+匹配除换行符以外的任意一个字符 | +
\d |
+匹配数字 | +
\w |
+匹配字母或数字或下划线或汉字 | +
\s |
+匹配任意的空白符 | +
^ |
+匹配字符串的开始 | +
$ |
+匹配字符串的结束 | +
举例
+1 | import re |
输出:
| 代码 | +说明 | +
|---|---|
* |
+重复0次-无数次 | +
+ |
+重复1次-无数次 | +
? |
+重复0次-1次 | +
{m} |
+重复m次 | +
{m,n} |
+重复m-n次 | +
举例
+1 | import re |
输出:
贪婪:匹配尽可能长的字符串
懒惰:匹配尽可能短的字符串
懒惰模式的启用只需在重复元字符之后加?既可。
*? 重复任意次,但尽可能少重复+? 重复1次或更多次,但尽可能少重复?? 重复0次或1次,但尽可能少重复{n,m}? 重复n到m次,但尽可能少重复{n,}? 重复n次以上,但尽可能少重复举例
+1 | import re |
输出
注意:
如果想匹配元字符本身或者正则中的一些特殊字符,使用\\转义。
这里介绍的正则内容是最基础的,想要了解更详细的正则表达式语法,请参考:
+有时候我们想利用正则表达式对用户输入进行判断,比如判断用户输入的身份证号是否符合规则,那么可以这样写:
+1 | import re |
输入结果
说明:^字符表示必须匹配字符串开头;$表示必须匹配字符串结尾。
假设,输出一串文本,只想保留汉字,去除特殊符号。代码如下:
+1 | import re |
输入结果:
查找某个文本在字符串中的位置,一般用于信息提取。
+1 | import re |
输出结果
+
人生苦短,我用python早下班。如果觉得不错,对你工作中有帮助,请长按下面二维码关注我们。(回复训练营加群,一起探讨python问题)
+ 
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 介绍Python语言新的特性 +
+
+ + 介绍Python语言新的特性 +
+
+ + Python自然语言处理教程 +
+
+ + Python入门教程 +
+
+ + Python入门教程 +
+
+ + Python入门教程 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 极简Python自动化办公系列 +
+
+ + 关于飞蟒Python +
+