笔记,字符串(3)
对上篇文章个例的补充、更新,更简洁、易懂,主要还是转换思路,用字典进行处理。最终效果和上次一致。涉及字典多方面的知识点。
#用字典进行处理 import csv csvfile = open(r'F:\party\try2.csv', 'r') #手动剔除不规则的首行 reader = csv.DictReader(csvfile) print(reader) names = [] #新建列表 f = open(r"F:\party\name.txt", "r") lines = f.readlines() f.close() for ii in lines: i = ii.strip('\n') #去掉换行 i1 = ''.join(i.split(' ')) #去掉文字中间空格 names.append(i1) #列表添加 print(names) num1 = 0 csvFile = open(r"F:\party\test.csv", 'w+') #如果csv数据带有空格,读取容易出错,格式不统一 writer = csv.writer(csvFile) writer.writerow(('职工姓名', '党费计算基数', '交纳比例', '交纳党费')) subkeys = ['职工姓名', '党费计算基数', '交纳比例', '交纳党费'] for rows in reader: if rows['职工姓名'][0:3] in names: #判断相应元素是否在名单中 aa = dict([(key, rows[key]) for key in subkeys]) #挑选需要的列 #print(aa.keys()) #items = aa.items() #print(items) writer.writerow(aa[key] for key in subkeys) #挑选对应名单的行,并且按照指定顺序输出 num1 += 1 print(num1) csvfile.close() #什么时候不需要用文件了才关闭 ''' print(list(rows.keys())) print(rows.keys()) #单纯显示字典标签 print(rows.values()) #单纯显示值 '''
参考:http://www.jb51.net/article/55328.htm
字典的基本操作
1、如何访问字典中的值?
adict[key] 形式返回键key对应的值value,如果key不在字典中会引发一个KeyError。
2、如何检查key是否在字典中?
a、has_key()方法 形如:adict.haskey(‘name') 有–>True,无–>False
b、in 、not in 形如:'name' in adict 有–>True,无–>False
3、如何更新字典?
a、添加一个数据项(新元素)或键值对
adict[new_key] = value 形式添加一个项
b、更新一个数据项(元素)或键值对
adict[old_key] = new_value
c、删除一个数据项(元素)或键值对
del adict[key] 删除键key的项 / del adict 删除整个字典
adict.pop(key) 删除键key的项并返回key对应的 value值
映射类型操作符
标准类型操作符(+,-,*,<,>,<=,>=,==,!=,and,or, not)
a、字典不支持拼接和重复操作符(+,*)
b、字典的比较操作
先比较字典的长度也就是字典的元素个数
键比较
值比较
映射相关的函数
1、len() 返回字典的长度
2、hash() 返回对象的哈希值,可以用来判断一个对象能否用来作为字典的键
3、dict() 工厂函数,用来创建字典
字典的方法(adict表示字典名)
1、adict.keys() 返回一个包含字典所有KEY的列表;
2、adict.values() 返回一个包含字典所有value的列表;
3、adict.items() 返回一个包含所有(键,值)元祖的列表;
4、adict.clear() 删除字典中的所有项或元素;
5、adict.copy() 返回一个字典浅拷贝的副本;
6、adict.fromkeys(seq, val=None) 创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None);
7、adict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None);
8、adict.has_key(key) 如果key在字典中,返回True,否则返回False。 现在用 in 、 not in;
9、adict.iteritems()、adict.iterkeys()、adict.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;
10、adict.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;
11、adict.setdefault(key, default=None) 和set()方法相似,但如果字典中不存在Key键,由 adict[key] = default 为它赋值;
12、adict.update(bdict) 将字典bdict的键值对添加到字典adict中。

浙公网安备 33010602011771号