`

Python小记

阅读更多
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 l
True
>>> 91 in l
False

# 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 m
True
>>> 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 dic
True


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

元组的特殊用法:
# 一个数字而已
>>> tu = (0)
>>> tu
0
# 一个元组
>>> 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 datetime

date = "2013/04/27"
date_time = datetime.datetime.strptime(date, '%Y/%m/%d')
# 周一 weekday 是 0
weekday = date_time.weekday() + 1
print date_time
print 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 string
import random
string.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'))

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics