python中csv.DictReader()方法怎么使用


本篇内容介绍了“python中csv.DictReader()方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!示例代码1:sample为一个txt文件,文件内容如下:代码运行在终端输出的结果为: # 来自于示例代码1中的print(reader)
OrderedDict([(‘id’, ‘1’), (‘name’, ‘jason’), (‘age’, ’18’)]) # 来自于示例代码1中的print(line)
1 jason 18 # 来自于示例代码1中的print(line[‘id’],line[‘name’],line[‘age’])
OrderedDict([(‘id’, ‘2’), (‘name’, ‘jian’), (‘age’, ’20’)])
2 jian 20
OrderedDict([(‘id’, ‘3’), (‘name’, ‘xiaoming’), (‘age’, ’30’)])
3 xiaoming 30
OrderedDict([(‘id’, ‘4’), (‘name’, ‘dog’), (‘age’, ’40’)])
4 dog 40
OrderedDict是一种长相类似于列表的数据类型,该列表中嵌套着元组例:line = OrderedDict([(‘id’, ‘1’), (‘name’, ‘jason’), (‘age’, ’18’)]),每个元组中的第一个元素为键,第二个元素为值(类似于字典),每个元组中的键是哪里来的呢?==默认情况下(可以自己设置的)==csv.DictReader()读到的第一行数据就是键。并且可以通过索引的方法来取出OrderedDict数据中的值print(line[‘id’],line[‘name’],line[‘age’]) # 可以通过键进行索引取值(类似于字典)。在reader = csv.DictReader(f,fieldnames=[‘new_id’,’new_name’,’new_age’])中添加参数fieldnames=[‘new_id’,’new_name’,’new_age’]用来指定键。示例代码2:next()方法用于移动指针,示例代码2中的head_row = next(reader)获取的是第一行数据存储在head_row中,执行一次next()指针移动一行,此时指针已经移动到了第二行开头,再次读数据的时候,就从第二行开始读取。如果不执行head_row = next(reader)则输出中还会多出这样的结果OrderedDict([(‘new_id’, ‘id’), (‘new_name’, ‘name’), (‘new_age’, ‘age’)])第一行数据也被算在了其中。代码运行在终端输出的结果为: # 来自于示例代码2的print(reader)
OrderedDict([(‘new_id’, ‘1’), (‘new_name’, ‘jason’), (‘new_age’, ’18’)]) # 来自于示例代码2的print(line)
1 jason 18 # 来自于示例代码2的print(line[‘new_id’],line[‘new_name’],line[‘new_age’])
OrderedDict([(‘new_id’, ‘2’), (‘new_name’, ‘jian’), (‘new_age’, ’20’)])
2 jian 20
OrderedDict([(‘new_id’, ‘3’), (‘new_name’, ‘xiaoming’), (‘new_age’, ’30’)])
3 xiaoming 30
OrderedDict([(‘new_id’, ‘4’), (‘new_name’, ‘dog’), (‘new_age’, ’40’)])
4 dog 40
如果读取的行具有比键名序列更多的值,此时则会将剩余的数据作为值添加到restkey中的键下面。此时我们修改sample文件多添加一列数据。
在reader = csv.DictReader(f,fieldnames=[‘new_id’,’new_name’,’new_age’],restkey=’hobby’)中添加restkey=’hobby’用来指定接收多余值的键,并且要注意restkey只能传入一个值,不能传入列表,元组数据类型。sample为一个txt文件,文件内容如下:示例代码3:代码运行在终端输出的结果为: # 来自于示例代码3的print(reader)
OrderedDict([(‘new_id’, ‘1’), (‘new_name’, ‘jason’), (‘new_age’, ’18’), (‘hobby’, [‘dbj’])]) # 来自于示例代码3的print(line)
1 jason 18 # 来自于示例代码3的print(line[‘new_id’],line[‘new_name’],line[‘new_age’])
OrderedDict([(‘new_id’, ‘2’), (‘new_name’, ‘jian’), (‘new_age’, ’20’), (‘hobby’, [‘lol’])])
2 jian 20
OrderedDict([(‘new_id’, ‘3’), (‘new_name’, ‘xiaoming’), (‘new_age’, ’30’), (‘hobby’, [‘game’])])
3 xiaoming 30
OrderedDict([(‘new_id’, ‘4’), (‘new_name’, ‘dog’), (‘new_age’, ’40’), (‘hobby’, [‘noting’])])
4 dog 40
从代码运行结果中我们会发现多出来的值,确实使用restkey指定的键restkey=’hobby’来接收了OrderedDict([(‘new_id’, ‘1’), (‘new_name’, ‘jason’), (‘new_age’, ’18’), (‘hobby’, [‘dbj’])])
注意虽然多余的键可以用restkey指定的键接收,但是却无法通过索引打印出来,也就是执行print(line[“hobby”])的话就会报错KeyError: ‘hobby’。如果读取的行具有比键名序列更少的值,此时剩余的键则会使用可选参数restval中的值。此时我们修改sample文件多添加一列数据。
在reader = csv.DictReader(f,fieldnames=[‘new_id’,’new_name’,’new_age’,’hobby’],restval=’others’)中添加restval=’others’用来指定键对应值为空时的默认值,并且要注意restval也只能传入一个值,不能传入列表,元组数据类型。sample为一个txt文件,文件内容如下:示例代码4:代码运行在终端输出的结果为:OrderedDict([(‘new_id’, ‘1’), (‘new_name’, ‘jason’), (‘new_age’, ’18’), (‘hobby’, ‘others’)]) # 来自于示例代码4的print(line)
1 jason 18 others # 来自于示例代码4的print(line[‘new_id’],line[‘new_name’],line[‘new_age’],line[‘hobby’])
OrderedDict([(‘new_id’, ‘2’), (‘new_name’, ‘jian’), (‘new_age’, ’20’), (‘hobby’, 免费云主机域名‘lol’)])
2 jian 20 lol
OrderedDict([(‘new_id’, ‘3’), (‘new_name’, ‘xiaoming’), (‘new_age’, ’30’), (‘hobby’, ‘others’)])3 xiaoming 30 others
OrderedDict([(‘new_id’, ‘4’), (‘new_name’, ‘dog’), (‘new_age’, ’40’), (‘hobby’, ‘noting’)])
4 dog 40 noting“python中csv.DictReader()方法怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注百云主机网站,小编将为大家输出更多高质量的实用文章!

相关推荐: vue.config.js常用配置方法是什么

这篇文章主要介绍“vue.config.js常用配置方法是什么”,在日常操作中,相信很多人在vue.config.js常用配置方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”vue.config.js常用配置方法是什么”…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/16 15:16
下一篇 03/16 15:16

相关推荐