智能决策上手系列教程索引
收集一些零散的小技巧备用, 不断更新.
无法替换去除的空格
str.replace(str1,str2,max) 官方说明就这么多, str1 和 str2 只能是字符串, 不能用正则.
有时候 replace 怎么也去不掉某些空格, 这是因为空格有很多种, 除了一般的''还有'\xa0'.
repr 是替换掉反引号, 反引号就是键盘左上角波浪键~ 下面那个, 用 repr 可以打印出字符串的本来面貌, 把 \ xa0` 原样打印出来.
- import re
- s='AA \xa0BB'
- print(s)
- print(repr(s))
- print(s.replace('',''))
- print(s.replace('','').replace('\xa0',u''))
- print(re.sub('\s+','',s))
输出的结果是:
image.PNG
从上面看到, re.sub 还是很强大的, 可以把各种空格都当做 \ s 来替换,+ 是数量表示一个或多个, 就是不管多少个空格和 \ xa0 都会被一个 \ s + 都替代. 但是正则表达式 re 比较麻烦, 不推荐使用.
遇到类似问题的解决思路是: 用 repr 把它打印出来, 看看都是什么, 然后逐个 replace.
格式化输出对象
可以利用 JSON.dumps(obj,indent=2,ensure_ascii=False) 来把一个对象, dict 漂亮整齐的打印出来
- import JSON
- obj={
- 'a':1,
- 'b':{
- 'b1':11,
- 'b2':22,
- }
- }
- s=JSON.dumps(obj, indent=2,ensure_ascii=False)
- print(s)
得到结果:
image.PNG
网页数据导致的乱码
如果 html 页面 header 里面没有包含编码格式, 那么 BeautifulSoup 就会当做网页默认编码'ISO-8859-1'来处理, 导致乱码.
解决办法就是重新编码再解码成'gbk'中文字符:
- s='ËÕÖÝÇàÌìÍøÂç¿Æ¼¼ÓÐÏÞ¹«Ë¾'
- s=s.encode('ISO-8859-1').decode('gbk')
- print(s)
输出中文名.
检测文件是否存在
- from os.path import exists
- if exists('c.txt'):
- with open('c.txt','a') as f:
- f.write('exist')
- f.close()
- else:
- with open('c.txt','a') as f:
- f.write('none')
- f.close()
将时间戳数字转换成日期小时
time.time() 获取当前时间戳.
datetime.datetime.fromtimestamp(tm) 将数字转化为日期对象
strftime 转化为可读字符串, YmdHMS 年月日时分秒
- import time,datetime
- tm=int(time.time())
- s=datetime.datetime.fromtimestamp(tm).strftime('%Y-%m-%d %H:%M:%S')
- print(s)
输出: 2018-10-09 07:48:52
字符串转为字典对象
适用于复制出来的 headers
- def str2obj(s, s1=';', s2='='):
- li = s.split(s1)
- res = {}
- for kv in li:
- li2 = kv.split(s2)
- if len(li2)> 1:
- res[li2[0]] = li2[1]
- return res
- headerstr='''
- a: 111
- b: 333
- ccc
- '''headers = str2obj(headerstr,'\n',': ')
- print(headers)
输出:{'a': '111', 'b': '333'}
智能决策上手系列教程索引
每个人的智能决策新时代
如果您发现文章错误, 请不吝留言指正;
如果您觉得有用, 请点喜欢;
来源: http://www.jianshu.com/p/62398aa5c5c2