Python小技巧合集

作者: zhyuzh3d | 来源:发表于2018-10-09 07:56 被阅读198次

智能决策上手系列教程索引

收集一些零散的小技巧备用,不断更新。

无法替换去除的空格

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'}


智能决策上手系列教程索引

每个人的智能决策新时代

如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,欢迎转载~


END

相关文章

网友评论

    本文标题:Python小技巧合集

    本文链接:https://www.haomeiwen.com/subject/wcnsaftx.html