@king
2015-10-10T11:03:32.000000Z
字数 4774
阅读 2897
Python
# 输出实例,Python3 必须加括号print ('hello','world')# 输入实例name = input();#输入时提示name = input('please enter your name:');#格式转换,如果输入字母等非数字字符会报错birth = int(input('birth:'))
#转义print '\\\n\\'#防止转义print r'\\\n\\'#多行内容表示,用三引号包括print ('''line1line2ling2''')#布尔值print (3 > 2)#转化成UTF-8编码str = '中文'.encode('utf-8'))#将上述字符串解码并输出print(str.decode('utf-8'))
#!/usr/bin/env python# -*- coding: utf-8 -*-
#格式化输出实例print('Hello,%s' % 'world')print('%s, %s' % ('Hello', 'world'))#格式化整数和小数print('%2d-%02d' %(3,1))print('%.2f' %3.1415926)#万能格式化%s,可以替代所有格式化print('%s-0%s' %(3,1))print('%s' %3.1415926)#对于Unicode字符串,用法完全一样,但最好确保替换的字符串也是Unicode字符串print(u'Hi,%s' % u'Jason0539')#有占位符的情况下输出百分号%,用双%即可print('growth rate:%d%%' % 7)
#列表list,可变的有序列表classmates = ['Jack','Bob','Tracy']#len函数获取它的长度len(classmates)#获取某个元素,用中括号索引classmates[2]#倒数索引,可以倒序获取数组元素classmates[-1]#append追加元素到末尾classmates.append('Adam')#insert插入到指定位置classmates.insert(0,'Jason0539')#pop 删除并返回末尾元素classmates.pop()#pop 删除并返回指定位置元素classmates.pop(0)#元素改变,直接赋值即可classmates[0]='Jason0539'#list可以嵌套,可用二维索引s = ['python','java',['asp','jsp'],'scheme']print(s[2][1])#空列表l=[]
#不可变有序的数组#定义元组classmates = ('Michael','Bob','Tracy')classmates = () # 空tuplet = (1,) # 单元素tuple#注意不能用 t = (1) 来定义, 因为它定义的不是tuple,是 1 这个数,这是因为括号既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。#表面上可变的tuplet = ('a','b',['A','B'])t[2][0]='X't[2][1]='Y'#表面上看,tuple的元素确实变了,但其实变的不是tuple的元素,而是list的元素。tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向 ‘a’,就不能改成指向 ‘b’ ,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的
字典dict
#字典 dict 即键值对组,dict的key必须是不可变对象。d = {'Michael':95,'Bob':75,'Tracy':85}#把数据放入dict的方法,除了初始化时指定外,还可以通过key放入,在这之前,d 必须被声明,否则会报错d['Jason']=5390#判断key是否在字典中,区分大小写#1.in判断'Jason' in d#2.通过dict提供的get方法判断,如果key不存在,可以返回None,或者返回自己指定的默认valued.get('Thomas')d.get('Thomas',-1)#3.要删除一个key,用pop(key)方法,对应的value也会从dict中删除d.pop('Jason')
#set和dict类似,也是一组key的集合,但不存储value,没有重复的key#要创建一个set,需要提供一个list作为输入集合s = set([1,2,3])#重复元素在set中自动被过滤s = set([1,2,3,2,3,2,4])print(s)#通过add(key)方法可以添加元素到set中,可以重复添加,但没有效果s.add(4)#通过remove(key)方法可以删除元素s.remove(4)#判断元素是否在set中5 in s#set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作s1 = set([1,2,3])s2 = set([2,3,4])print(s1 & s2)print(s1 |s2 )
# 复制字符串,利用切片s1 = 'king's2 = s1[::]# 扫描字符串是否包含指定字符(串)s1 = '12345678' # 待检查s2 = '456' # 指定字符串print(bool(sStr1.find(sStr2))) # 方法1print(bool(len(s1 and s2)) # 方法2# 将字符串前n个字符替换为指定的字符s = '12345'ch = 'r'n = 3s = n * ch + s[3:]# 翻转字符串s1 = '12345's2 = s1[::-1]# 连接字符串delimiter = ','mylist = ['Brazil', 'Russia', 'India', 'China']print(delimiter.join(mylist)) # Brazil,Russia,India,China# 只显示字母与数字def OnlyCharNum(s):s2 = s.lower();fomart = 'abcdefghijklmnopqrstuvwxyz0123456789'for c in s2:if not c in fomart:s = s.replace(c, '');return s;
s.startwith(prefix[,start[,end]]) # 是否以prefix开头s.endwith(suffix[,start[,end]]) # 以suffix结尾s.isalnum() # 是否全是字母和数字,并至少有一个字符s.isalpha() # 是否全是字母,并至少有一个字符s.isdigit() # 是否全是数字,并至少有一个字符s.isspace() # 是否全是空白字符、\t、\n,并至少有一个字符s.islower() # s中的字母是否全是小写s.isupper() # s中的字母是否便是大写s.istitle() # s是否是首字母大写的
s.upper() #转大写s.lower() #转小写s.capitalize() #首字母大写,其余小写s.title() #把每个单词第一个字母大写,其余小写s.swapcase() #大小写互换
s.ljust(width,[fillchar]) # 输出width个字符,左对齐,不足部分用fillchar填充,默认的为空格。s.rjust(width,[fillchar]) # 右对齐s.center(width, [fillchar]) #中间对齐s.zfill(width) #把S变成width长,并在右对齐,不足部分用0补足
s.find(substr, [start, [end]]) # 返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。s.index(substr, [start, [end]]) # 与find()相同,只是在s中没有substr时,会返回一个运行时错误s.rfind(substr, [start, [end]])#从右边算起的第一次出现的substr的首字母标号,没有则返回-1s.rindex(substr, [start, [end]]) # 与index类似,从右数s.count(substr, [start, [end]]) #计算substr在s中出现的次数s.replace(oldstr, newstr, [count])#把s中的oldstar替换为newstr,count为替换次数。这是替换的通用形式,还有一些函数进行特殊字符的替换s.strip([chars])# 把s首尾的chars中的字符全去掉s.lstrip([chars]) # 同上,仅查左首s.rstrip([chars])s.expandtabs([tabsize]) # 把s中的tab字符替换为空格,每个tab替换为tabsize个空格,默认是8个
s.split([sep, [maxsplit]]) # 以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符s.rsplit([sep, [maxsplit]]) # 同上,从右开始s.splitlines([keepends]) # 把S按照行分割符分为一个list,keepends是一个bool值,如果为真每行后而会保留行分割符。s.join(seq) # 把seq代表的序列──字符串序列,用S连接起来
s.maketrans(from, to) # 返回一个256个字符组成的翻译表,其中from中的字符被一一对应地转换成to,所以from和to必须是等长的。s.translate(table[,deletechars]) # 使用上面的函数产生的翻译表,把s进行翻译,并把deletechars中有的字符删掉。需要注意的是,如果s为unicode字符串,那么就不支持。 deletechars参数,可以使用把某个字符翻译为None的方式实现相同的功能。此外还可以使用codecs模块的功能来创建更加功能强大的翻译表。
s.encode([encoding,[errors]]) # 其中encoding可以有多种值,比如gb2312 gbk gb18030 bz2 zlib big5 bzse64等都支持。errors默认值为"strict",意思是UnicodeError。可能的值还有'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 和所有的通过codecs.register_error注册的值。s.decode([encoding,[errors]])
这几个函数只在string模块中有:
string.atoi(s[,base]) # base默认为10,如果为0,那么s就可以是012或0x23这种形式的字符串,如果是16那么s就只能是0x23或0X12这种形式的字符串string.atol(s[,base]) #转成longstring.atof(s[,base]) #转成float
这里再强调一次,字符串对象是不可改变的,也就是说在python创建一个字符串后,你不能把这个字符中的某一部分改变。任何上面的函数改变了字符串后,都会返回一个新的字符串,原字串并没有变。其实这也是有变通的办法的,可以用sS=list(s)这个函数把S变为由单个字符为成员的list,这样的话就可以使用s[3]='a'的方式改变值,然后再使用s="".join(s)还原成字符串