当前位置:首页 > 开发 > 编程语言 > Python > 正文

Python小记

发表于: 2013-02-26   作者:hotsunshine   来源:转载   浏览次数:
摘要: python2.7学习记录,自我感觉比较重要的记录一下 一、字符串 # 单引号,双引号,三引号(字符串块) # raw防止转义 # not use raw >>> stri = 'c:\new\file' >>> stri 'c:\new\x0cile' #use raw >>> stri = r'c:\new
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'))

Python小记

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
大学开始就一直使用Notepad++ 作为代码编辑器,喜欢它的简洁明了,喜欢它的个性,也喜欢它各种各样骚气
之前一个页面上用到UITextView用于输入留言,发现功能不够完善,今天加强了一下,主要有: 1.往IB里加的
编程难免有bug,一些隐蔽的bug往往让人比较烦恼,初学者更是如此,俺经过亲身经历,整理了一些debug的小
<!-- [if !mso]> <mce:style><!-- v/:* {behavior:url(#default#VML);} o/:* {behav
<!-- [if !mso]> <mce:style><!-- v/:* {behavior:url(#default#VML);} o/:* {behav
前段时间和同事完成了一个Exchange 2010 OWA的改造版,他狠狠的把网易邮箱抄了一把,而我则狠狠的被
1,git 一,win7左键Git Bash here时出现如下错误解决办法: 在Git Bash.vbs 脚本顶部加入一句 Const
人的记忆是有周期性的,你不记,只有看了会,时间长了就忘,然后再看,再会,然后时间长了又再忘...
放了7天假,突然觉得不自在,犯了所谓的假期综合症,听说有四成的人犯这个毛病,放假了还想着工作。
周末抽空看了一下tcmalloc,了解了个大概。下面记录一下。 一. 原理 tcmalloc就是一个内存分配器,
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号