正则的一点问题及抓取must(str)
来源:互联网 发布:淘宝怎么发布虚拟宝贝 编辑:程序博客网 时间:2024/06/08 02:39
#!/usr/bin/env python# encoding: utf-8"""@version: $@author: wenjiaGuo@license: Apache Licence @contact: 601152819@qq.com@site: http://www.baidu.com@software: PyCharm@file: zhegnze.py@time: 2017/9/6 19:48"""import re###测试1#如果直接进行编译,括号中不能加双斜杠p = re.compile(r"共(\d+)条职位")a=r'共5461条职位'print type(a)print p.findall(a)### 测试2.#如果不是直接预编译,可以加上双斜杠和单斜杠效果是一样的。restr = """共(\d+)条职位"""regex = re.compile(restr, re.IGNORECASE)temp = regex.findall(r'共5461条职位')print(temp)
[编码问题超级大招]
主要针对python2.
python3不会出现这种情况。
str的类型有很多,比如str,gbk,decode("utf-8")#但是这些类型都是不一样的,#需要记住的最重要的一点是,#你用什么方式编码,最后要用什么编码方式,一定要用什么方式解码才行。a="python 数据"print type(a)a=a.decode("utf-8").encode("gbk").decode("gbk").encode("utf-8")#为什么会出现上面的情况?因为a默认就是utf-8,你就必须先解码utf-8,再编码gbk.编码成gbk之后,如果你又想改回utf-8,就要先decode成gbk,后编码成utf-8.##再举一例。 #从黑窗口传过来的中文字符。 print keyword, type(keyword) #打印的结果是str类型的。 keyword1=urllib.quote(keyword.decode("gbk").encode("utf-8"))#为什么要这么做 print keyword1,type(keyword1)#还是str类型的。 你可能会问,这是什么鬼? 其实,这个是使用python写脚本的时候,我想传中文过来。但是发现url里面一直转不了类型。后来我发现,传过来的其实是gbk,而urllib.quote(a)里面的a必须是utf-8类型的,这个时候应该怎么做?那就只能先解开gbk,转码为utf-8.
再来一例
#!/usr/bin/env python# encoding: utf-8"""@author: wenjiaGuo@contact: 601152819@qq.com@software: PyCharm@file: paGirl2.py@time: 2017/9/7 20:10"""import sysimport urllib# reload(sys)# sys.setdefaultencoding("utf-8")a="python 数据"print type(a)a=a.decode("utf-8").encode("gbk").decode("gbk").encode("utf-8")print type(a)#这个需要重视的是,如果a不是utf-8类型的,是gbk,是会报错的。a=urllib.quote(a)url = str("http://search.51job.com/jobsearch/search_result.php?fromJs=1&keyword=")+a+"&keywordtype=2&lang=c&stype=2&postchannel=0000&fromType=1&confirmdate=9"print url
注意!!!!
<type 'str'>['5461']['5461']
这里必须是str,才能进行查找,如果是unicode,必须先转换成字符串。
可以通过decode的方式,也可以直接在文件上方添加三行代码。解决出现的编码问题。
import sysreload(sys)sys.setdefaultencoding('utf-8')
如果url里面有汉字,会对字符串产生切割,因为没办法识别。
这个时候,你可以通过urllib.quote(a)就可以完成字符串转unicode的转码。这个时候再进行字符串的拼接,就可以了。
import sysimport urllibreload(sys)sys.setdefaultencoding("utf-8")a="python 数据"a=urllib.quote(a)url = str("http://search.51job.com/jobsearch/search_result.php?fromJs=1&keyword=")+a+"&keywordtype=2&lang=c&stype=2&postchannel=0000&fromType=1&confirmdate=9"print url
可以不看,如果url汉字问题还没有解决,再看。
需要将中文转成url编码,只需要使用python提供的urllib库就可以。>>>import sys,urllib>>>s = "中文编码">>>print s中文编码>>> urllib.quote(s)'%BF%D5%D6%AE%BE%B3%BD%E7' ---->请注意,原作者这里输出的是utf-8格式,而我却是gbk所以,为了保证按照指定的格式输出,调用sys库下面提供的函数>>>s_utf=s.decode(sys.stdin.encoding).encode("utf-8") # 若想要gbk格式则把这行里的"utf-8"换成"gbk">>> print s_utf绌轰箣澧冪晫 # 嗯……竟然是乱码,不过这个不用管它~>>> urllib.quote(s_utf)'%E7%A9%BA%E4%B9%8B%E5%A2%83%E7%95%8C' # 数一数,正好十二组,也就是四个汉字至于与quote方法相对应的,则是unquote方法,作用是还原被quote函数转码过的字串。>>>urllib.unquote(urllib.quote(s)) ---->出来的结果是s字符串本身唯一需要在意的是这句:s.decode(sys.stdin.encoding).encode("utf-8") 将一个字符串s先使用系统标准编码方式进行解码,再将其结果重新编码为指定的格式。在我自己的系统上,sys.stdin.encoding就等于"gbk"
阅读全文
0 0
- 正则的一点问题及抓取must(str)
- python 抓取天气时碰到的一点正则问题 (.*)和(.*?)
- NSPredicate及正则的一点使用
- NSPredicate及正则的一点使用
- NSPredicate及正则的一点使用
- Thinkphp分组及出现的一点问题
- 安装samba的一点问题及解决
- java正则匹配及替换的一点思考
- 关于求字符串长度的问题,(strlen(),str.size()和str.length())
- 关于sizeof(str)的问题
- 从web抓取数据的一点经验教训
- BeautifulSoup简单的自助抓取一点信息
- while(cin>>str)无法结束的问题(转)
- 关于while(cin>>str)结束的问题 .
- 关于<a>的一点问题问题及解决方案
- 正则表达式(二):抓取tvmao电视节目的类
- illegal pure syntax, must be '= 0'初始化静态 const 整型(MFC编程中遇到的问题及解决)
- 正则表达式的一点说明
- 【iOS】RxSwift官方Example5--计算器
- Retrofit2自定义Converter.Factory
- zookeeper代码阅读-主要代码逻辑
- clion 激活
- Tomcat(总结整理)
- 正则的一点问题及抓取must(str)
- Linux centos 7.2系统安装Maven环境
- BZOJ3203: [SDOI2013]保护出题人
- webStorm基础设置-背景色、字体、大小
- Java初学者记录
- 纯js实现移动端web端轮播图-结合Tween算法自己造轮子
- 安装coreseek
- 55. Jump Game
- 第四章 构建测试体系