SyntaxError: Non-ASCII character '\xe5' in file *******
解决方法:
python的默认编码文件是用的ASCII码,你将文件存成了UTF-8,解决办法很简单,在文件开头加入
# -*- coding: UTF-8 -*- 或者 #coding=utf-8
列表:
#coding=utf-8
#列表的创建及删除操作
list = ["apple","banana","grape","orange"]
print list
print list[2]
list.append("watermelon")
list.insert(1,"grapefruit")
print list
list.remove("grape")
print list
print list.pop()
print list
#如果元组中有两个相同的元素,则删除对应元素时删除的是第一个出现的元素
#负索引,分片,遍历二元组
list = ["apple","banana","grape","orange"]
print list[-2]
print list[1:3] #从第2个元素到第3个元素
print list[-3:-1]
list = [["apple","banana"],["grape","orange"],["watermelon"],["grapefruit"]]
for i in range(len(list)):
print "list[%d]:"% i , "" ,
for j in range(len(list[i])):
print list[i][j]
#列表的连接功能
list = ["apple","banana","grape","orange"]
print list[-2]
print list[1:3] #从第2个元素到第3个元素
print list[-3:-1]
list = [["apple","banana"],["grape","orange"],["watermelon"],["grapefruit"]]
for i in range(len(list)):
print "list[%d]:"% i , "" ,
for j in range(len(list[i])):
print list[i][j]
#列表的查找,排序与反转
list_4 = ["apple","banana","orange","grape"]
print list_4.index("grape") #返回元素在列表的位置
print list_4.index("orange")
print "orange" in list_4
list_4.sort()
print "Sort list_4:",list_4
list_4.reverse()
print "Reversed list_4:",list_4
list_4.append("juice")
print list_4
list_4.index(1,list_1)
print list_4
list_4.remove("lemon")
print list_4
list_4.extend("hello")
print list_4
元组:
#coding=utf-8
#元组的创建
tuple_name = ('apple','banana','orange')
print tuple_name[1]
#如果只有一个元素需要加逗号,否则无法区分是元组还是表达式
tuple_name_1 = ('apple')
print tuple_name_1[0]
tuple_name_2 = ('apple',)
print tuple_name_2[0]
#元组不能添加或者删除任何元素,所以元组不存在任何添加删除元素的方法
#负数索引元组
tuple_name_3 = ('apple','banana','orange')
print tuple_name_3[-1]
print tuple_name_3[-2]
print tuple_name_3[-3]
#分片截取后得到的是一个元组
print tuple_name_3[1:3]
print tuple_name_3[0:-2]
print tuple_name_3[2:-2]
#元组的创建可以称为打包过程,相反解包是元组中的值分给各个变量
tuple_name_4 = ('apple','banana','orange')
q,w,e = tuple_name_4
print q,w,e
#二元元组的遍历
tuple_name_5 = (('apple','banana'),('orange',),('waterlelon',),('grapefruit',))
for i in range(len(tuple_name_5)):
print "tuple_name_5[%d]:"% i ,'',
for j in range(len(tuple_name_5[1])):
print tuple_name_5[i][j]
#map()实现元组的遍历
tuple_name_6 = (('apple','banana'),('orange',),('waterlelon',),('grapefruit',))
k = 0
for t in map(None,tuple_name_6):
print "tuple_name_6[%d]:" % k ,"",
for x in t :
print x,"",
print
k+=1
字典:
#coding=utf-8
#字典的创建和掩饰
dict = {"a":"apple","b":"banana","g":"grape","o":"orange"}
print dict
print dict["a"]
#字典的访问
dict["w"] = "watermelon"
del(dict["a"])
dict["g"] = "grapefruit"
print dict.pop("b")
print dict
dict.clear()
print dict
#实现字典的遍历
dict = {"a":"apple","b":"banana","g":"grape","o":"orange"}
for (k,v) in dict.items():
print "dict[ %s ] =" % k,v
print dict.keys()
print dict.values()
#字典中元素获得方法
print dict.get("c","apple")
print dict.get("e","apple")
#字典中更新方法
dict_1 = {"s":"silei"}
print dict_1
dict.update(dict_1)
print dict
#字典不是序列,所以更新后的字典是没有顺序的
#字典设置默认初始值
dict = {}
dict.setdefault("a")
print dict
dict["a"] = "apple"
dict.setdefault("a","default")
print dict
#字典的排序
dict = {"a":"apple","b":"banana","g":"grape","o":"orange"}
print dict
#按照key排序
print sorted(dict.items(),key=lambda d:d[0])
#按照value排序
print sorted(dict.items(),key=lambda d:d[0])
#字典的复制
#浅拷贝
dict_3 ={"a":"apple","b":"banana"}
dict_4 ={"c":"orange","d":"grap"}
dict_3 = dict_4.copy()
print dict_3
#深拷贝
import copy
dict ={"a":"apple","b":{"g":"grape","o":"orange"}}
dict2 = copy.deepcopy(dict)
dict3 = copy.copy(dict)#copy().copy()等于dict.copy()
dict2["b"]["g"] = "orange"
print dict
dict3["b"]["g"] = "orange"
print dict
#全局字典
#sys.modules是一个全局字典,该字典是Python启动后就加载在内存中的,每当加载新的模块的时候,都将记录这个模块,
# 这个字典就起到了缓存的作用。每当第一次加载这个模块的时候字典将自动记录这个模块,当第2次引入时,Python会在
# 字典中查找,从而加快了程序的运行速度
import sys
print sys.modules.keys()
print sys.modules.values()
print sys.modules["os"]
模板:
字符串模板已经作为PEP 292的一部分增加到Python 2.4中。
Example:
import string
a = { 'goods' : 'apple' }
b = string.Template("""
Fruit :$goods
Things :${goods} is a Fruit
Escape :$$
""")
print 'TEMPLATE:',b.substitute(a)
c = """
Fruit :%(goods)
Things :%(goods) is a Fruit
Escape :%%
"""
print 'INTERPOLATION',c % a
模板不需要考虑参数类型,数值会转换为字符串,再将字符串转换到结果中。
safe_substitute()可以避免未能提供模板所需要参数值时可能产生的异常。
Example:
import string
a = {'goods':'apple'}
b = string.Template("$goods")
try:
print 'substitute() :',b.substitute(a)
except KeyError, err:
print 'Error:',str(err)
print 'safe_substitute():',b.safe_substitute(a)
高级模板:
import string
template_text = '''
Delimiter : %%
Replaced : %with_underscore
Ignored : %notunderscored
'''
d = {
'with_underscore' : 'replace',
'notunderscored' : 'not replace,'
}
class MyTemplate(string.Template):
delimiter = '%'
idpattern = '[a-z]+_[a-z]+'
t = MyTemplate(template_text)
print 'Modified ID pattern:'
print t.safe_substitute(d)
这里重写MyTemplate
String中的源代码如下所示
但是被修改为
class MyTemplate(string.Template):
delimiter = '%'
idpattern = '[a-z]+_[a-z]+'
使得定界符修改为%,变量名必须带有下划线才会被替换
更复杂的替换