[x for x in range(1,10)]得到[1, 2, 3, 4, 5, 6, 7, 8, 9]
可以结合下划线只取元组列表的第n个元素:
a=[('a',1),('b',2)]
c=[c for c,_ in a]print(c)输出['a', 'b']
zip将两个列表合并为一个元组列表:
a=['a','b'] b=[1,2] c=zip(a,b)for m in c: print(m)
输出('a', 1)('b', 2)
两个列表同步排序先合并成元组列表,然后用sorted解决:
keywords=['c','a','b']
weights=[3,2,1]
comb=zip(keywords,weights)def comp(item):
return item[1]
comb=sorted(comb,key=comp)for o in comb:
print('>>',o)输出
321>> ('b', 1)>> ('a', 2)>> ('c', 3)lambdalambda 参数:返回值,对应于def hanshu(参数):return 返回值这样的格式。
def comp(item): return item[1] comb=sorted(comb,reverse=True,key=comp)
合并为
comb=sorted(comb,reverse=True,key=lambda k:k[1])无法替换去除的空格
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
repr(s)字符串表示只是用来开发和debug用的,没什么实际意义。
s='hello'n=9/5print(s,n)print(repr(s),repr(n))
输出只是差个引号:
hello 1.8'hello' 1.8网页数据导致的乱码
如果html页面header里面没有包含编码格式,那么BeautifulSoup就会当做网页默认编码'ISO-8859-1'来处理,导致乱码。
解决办法就是重新编码再解码成'gbk'中文字符:
s='ËÕÖÝÇàÌìÍøÂç¿Æ¼¼ÓÐÏÞ¹«Ë¾'s=s.encode('ISO-8859-1').decode('gbk')print(s)输出中文名。
检测文件是否存在from os.path import existsif 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'}
作者:zhyuzh3d
链接:https://www.jianshu.com/p/62398aa5c5c2



