正则的一点问题及抓取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"
原创粉丝点击