美文网首页python热爱者
python小技巧合集没让我失望,总有一个大神也会用得着!

python小技巧合集没让我失望,总有一个大神也会用得着!

作者: 48e0a32026ae | 来源:发表于2018-10-09 16:34 被阅读2次

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

无法替换去除的空格

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, '', ': ')

print(headers)

输出:{'a': '111', 'b': '333'}

相关文章

网友评论

    本文标题:python小技巧合集没让我失望,总有一个大神也会用得着!

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