Python小记

Python  /  houtizong 发布于 3年前   205
python2.7学习记录,自我感觉比较重要的记录一下

一、字符串

# 单引号,双引号,三引号(字符串块)# raw防止转义# not use raw>>> stri = 'c:\new\file'>>> stri'c:\new\x0cile'#use raw>>> stri = r'c:\new\file'>>> stri'c:\\new\\file'# 转成字符数组>>> list(stri)['c', ':', '\\', 'n', 'e', 'w', '\\', 'f', 'i', 'l', 'e']# find查找方法,返回字符串头所在的角标>>> stri.find('new')3# 字符串截取>>> stri[2:6]'\\new'# 其他类型转成字符串>>> str(3)'3'# 单个字符与对应的二进制编码的转换>>> ord('a')97>>> chr(97)'a'# 字符串是不可变序列,不能再原地修改>>> stri[1] = 's'Traceback (most recent call last):  File "<stdin>", line 1, in <module>TypeError: 'str' object does not support item assignment# 要修改需要合并,分片这样的工具来操作>>> stri = stri + 'ad'>>> stri'C:\\file\\newad'# 替换字符串>>> stri = 'C:\\file\\newad'>>> stri += "new">>> stri'C:\\file\\newadnew'>>> stri.replace('new','_old_')'C:\\file\\_old_ad_old_'# 在char数组之间进行变换>>> li = list(stri)>>> li['C', ':', '\\', 'f', 'i', 'l', 'e', '\\', 'n', 'e', 'w', 'a', 'd', 'n', 'e', 'w']>>> ''.join(li)'C:\\file\\newadnew'# 文本解析>>> stri = stri.replace("new", " new ")>>> stri'C:\\file\\ new ad new '  # split 默认是 空格解析>>> stri.split()['C:\\file\\', 'new', 'ad', 'new']  # 其他解析方法>>> stri.split('new')['C:\\file\\ ', ' ad ', ' ']# 字符串格式化# 还有其他替换符号,比如十进制,八进制,十六进制 双%解析为一个%>>> 'str:%s,char:%c,int:%i,float:%f,%% ' % ('string',3,23,12.5)'str:string,char:\x03,int:23,float:12.500000,% '>>> '%.2f' % 1.23455'1.23'# 字符串编码>>> stri.encode('utf-8')'C:\\file\\ new ad new '# 大小写转换>>> stri.upper()'C:\\FILE\\ NEW AD NEW '>>> stri.lower()'c:\\file\\ new ad new '


二、列表List

# 字符串转化成字符数组>>> l = list('spam')>>> l['s', 'p', 'a', 'm']>>> # 连续的整数列表>>> range(-4,4)[-4, -3, -2, -1, 0, 1, 2, 3]# 数组截取>>> l[1:3][-3, -2]# 列表解析(元素过滤操作返回)>>> l[1, 3, 5, 6, 2]>>> l = [x ** 2 for x in l ]>>> l[1, 9, 25, 36, 4]# 删除(只能删除第一个出现的元素)>>> l[1, 2, 2, 3, 5, 6, 2]>>> l.remove(2)>>> l[1, 2, 3, 5, 6, 2]# 删除某下标元素>>> l[1, -2, 2, -3, 5, 6, -2]>>> del l[1]>>> l[1, 2, -3, 5, 6, -2]# 判断是否含有某元素>>> l[1, 9, 25, 36, 4]>>> 9 in lTrue>>> 91 in lFalse# list的map(内置函数)操作>>> l[1, -2, 2, -3, 5, 6, -2]>>> list(map(abs,l))[1, 2, 2, 3, 5, 6, 2]# 连续的数组列表 0-10>>> range(10)[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]# 遍历这个数组,处理一下,返回另一个数组>>> [('n'+str(i)) for i in range(10)]['n0', 'n1', 'n2', 'n3', 'n4', 'n5', 'n6', 'n7', 'n8', 'n9']# 倒序>>> arr = [1,2,3]>>> arr_re = reversed(arr)>>> [ i for i in arr_re][3, 2, 1]




三、字典

# 初始化,检测key值是否存在,获取key键列表,获取values值列表>>> m = {'spam':1,'list':2}>>> m{'list': 2, 'spam': 1}>>> 'list' in mTrue>>> m.keys()['list', 'spam']>>> m.values()[2, 1]# 创建字典的方法# method 1>>> {'name':'mike', 'age':'20'}{'age': '20', 'name': 'mike'}# method 2>>> dic = {}>>> dic['name'] = 'mike'>>> dic{'name': 'mike'}# method 3>>> dict(name='mike',age=20){'age': 20, 'name': 'mike'}# method 4>>> dict([('name','age'),('mike',20)]){'mike': 20, 'name': 'age'}# 新加键值对,删除键值对>>> m['del']=3>>> m{'del': 3, 'list': 2, 'spam': 1}>>> del m['del']>>> m{'list': 2, 'spam': 1}# map的list应用>>> list(m)['list', 'spam']>>> list(m.items())[('list', 2), ('spam', 1)]# 合并操作(update)>>> m{'list': 2, 'spam': 1}>>> m2{'mew': 5}>>> m.update(m2)>>> m{'mew': 5, 'list': 2, 'spam': 1}# 一个从列表得到字典的实例:>>> dic = {c.lower() : c for c in ['NAME','AGE','GENDER']}>>> dic{'gender': 'GENDER', 'age': 'AGE', 'name': 'NAME'}# 初始化字典默认值的实例:# method 1>>> dic = dict.fromkeys(['nu','nm'],0)>>> dic{'nu': 0, 'nm': 0}# method 2>>> dic = {k:0 for k in ['q','w']}>>> dic{'q': 0, 'w': 0}# 字典key键值排序>>> dic{'q': 0, 'a': 5, 'w': 0}>>> li = list(dic.keys())>>> li['q', 'a', 'w']>>> li.sort()>>> li['a', 'q', 'w']# 字符串数组排序>>> vers_arr = ['1','2','12','222']>>> vers_arr.sort(cmp=lambda x,y: cmp(x.lower(), y.lower()))>>> vers_arr['1', '12', '2', '222']# 判断时候存在一个键值>>> dic{'q': 0, 'a': 5, 'w': 0}>>> 'a' in dicTrue


四、元组(tuple)
元组与list非常类似,区别是元组不能在原处修改,并且通常写成圆括号

元组的特殊用法:
# 一个数字而已>>> tu = (0)>>> tu0# 一个元组>>> tu = (0,)>>> tu(0,)

转化成list
>>> list(tu)[0]



五 日期处理

# 日期格式化>>> datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S');'2013-04-28 09:41:08'# 根据当天的时间推算出上一周的起始日期import datetimedate = "2013/04/27"date_time = datetime.datetime.strptime(date, '%Y/%m/%d')# 周一 weekday 是 0weekday = date_time.weekday() + 1print date_timeprint weekday last_week_one = date_time - datetime.timedelta(days = (6+weekday))last_week_seven = date_time - datetime.timedelta(days = (weekday))print last_week_one print last_week_seven # 输出>>> print last_week_one 2013-04-15 00:00:00>>> print last_week_seven 2013-04-21 00:00:00# 两个日期之间的日期列表>>> from datetime import date, timedelta >>> >>> start = date(2013,2,25)>>> end = date(2013,3,05)>>> >>> delta = end - start>>> >>> dates = [ str((start + timedelta(days=i))) for i in range(delta.days + 1)]>>> >>> dates['2013-02-25', '2013-02-26', '2013-02-27', '2013-02-28', '2013-03-01', '2013-03-02', '2013-03-03', '2013-03-04', '2013-03-05']




其他
实例:产生随机的n个字符的字符串
import stringimport randomstring.join(random.sample(list('qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM@&*'), 8)).replace(" ","")# 保留小数点2位,0补齐>>> a = 14656452.9>>> str = "%.2f" % a >>> str'14656452.90'# 四舍五入>>> a = 14656452.9>>> round(a)14656453.0# 四舍五入,取整数>>> int(round(a))14656453# 获取格式化的时间
import time>>> time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))'2013-03-28 10:08:00'






一个python的uri特殊符号编码
>>> import urllib>>> urllib.quote('&a=sdf&%#')'%26a%3Dsdf%26%25%23'>>> urllib.unquote('%26a%3Ds%26n')'&a=s&n'# 如果涉及到编码问题urllib.quote('中文'.decode(sys.stdin.encoding).encode('utf8'))

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!

留言需要登陆哦

技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成

网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];

      订阅博客周刊 去订阅

文章归档

文章标签

友情链接

Auther ·HouTiZong
侯体宗的博客
© 2020 zongscan.com
版权所有ICP证 : 粤ICP备20027696号
PHP交流群 也可以扫右边的二维码
侯体宗的博客