当前位置: 首页 > news >正文

石油 技术支持 东莞网站建设网站收录提交入口网址

石油 技术支持 东莞网站建设,网站收录提交入口网址,全球设计中心,怎么制作购物网站csv文件完整操作总结 1.概述 csv 模块主要用于处理从电子数据表格Excel或数据库中导入到文本文件的数据,通常简称为 comma-separated value (CSV)格式因为逗号用于分离每条记录的各个字段。 2.读写操作 2.1.测试数据 创建一个test.csv文…

csv文件完整操作总结

1.概述

csv 模块主要用于处理从电子数据表格Excel或数据库中导入到文本文件的数据,通常简称为 comma-separated value (CSV)格式因为逗号用于分离每条记录的各个字段。

2.读写操作

2.1.测试数据

创建一个test.csv文件,复制下面内容到文件中

"Title 1","Title 2","Title 3","Title 4"
1,"a",08/18/07,"å"
2,"b",08/19/07,"∫"
3,"c",08/20/07,"ç"

2.2.读取

从 CSV 文件中读取数据,可以使用 reader() 函数来创建一个读取对象。 这个读取对象顺序处理文件的每一行,可以把它当成迭代器使用, 例如:

import csvwith open('test.csv', 'rt') as f:reader = csv.reader(f)for row in reader:print(row)

reader() 的第一个参数指源文本,在这个例子中,是一个文件,但它可以是任何可迭代对象( StringIO 实例,list 等)。第二个参数是可选的,可用于控制输入的数据如何被解析。

['Title 1', 'Title 2', 'Title 3', 'Title 4']
['1', 'a', '08/18/07', 'å']
['2', 'b', '08/19/07', '∫']
['3', 'c', '08/20/07', 'ç']

2.3.写入

写入 CSV 文件和读取它们一样简单。使用 writer() 方法创建一个写入对象,然后使用 writerow() 去输出每一行。

import csvunicode_chars = 'å∫ç'with open('testout.csv', 'wt') as f:writer = csv.writer(f)writer.writerow(('Title 1', 'Title 2', 'Title 3', 'Title 4'))for i in range(3):row = (i + 1,chr(ord('a') + i),'08/{:02d}/07'.format(i + 1),unicode_chars[i],)writer.writerow(row)print(open('testout.csv', 'rt').read())

这个例子的输出和上面读取的例子看起来有些不同,是因为这里有的值没有加引号

Title 1,Title 2,Title 3,Title 4
1,a,08/01/07,å
2,b,08/02/07,3,c,08/03/07,ç

2.4.引号

写入时,默认的引用行为不同,所以之前示例中的第二和第三个字段未被引用。 要添加引号,请将 quoting 参数设置为其他引用模式。

writer = csv.writer(f, quoting=csv.QUOTE_NONNUMERIC)

在这个例子中, QUOTE_NONNUMERIC 会给所有字段值不是数字的值添加引号


"Title 1","Title 2","Title 3","Title 4"
1,"a","08/01/07","å"
2,"b","08/02/07","∫"
3,"c","08/03/07","ç"

有四种不同的引用选项,在 csv 模块中被定义为常量。

  • QUOTE_ALL :无论什么类型的字段都会被引用。
  • QUOTE_MINIMAL:这是默认的选项,使用指定的字符引用各字段(如果解析器被配置为相同的 dialect 和选项时,可能会让解析器在解析时产生混淆)。
  • QUOTE_NONNUMERIC:引用那些不是整数或浮点数的字段。当使用读取对象时,如果输入的字段是没有引号的,那么它们会被转换成浮点数。
  • QUOTE_NONE:对所有的输出内容都不加引用,当使用读取对象时,引用字符看作是包含在每个字段的值里(但在正常情况下,它们被当成定界符而被去掉)。

3.编码风格

其实没有一个标准定义这类逗号分隔值的文件,所以解析器需要很灵活,通过很多参数去控制如何解析 csv 或给其写入数据。但这并不是每个参数在写入或读取 csv 时分别传入,而是统一分组为一个 编码风格 对象。

3.1.查看编码风格

Dialect 类可以通过名字注册,因此 csv 模块调用它时不必预先知道相关的参数设置。所有注册过的编码风格列表可以通过 list_dialects() 方法查看。

import csvprint(csv.list_dialects())

标准库提供了三种编码风格,分别为: excel, excel-tabs 和 unix。 excel 编码风格用来处理默认来自 Microsoft Excel 格式的数据的,同样可用于处理来自 LibreOffice 格式的。 unix 编码风格将所有字段通过双引号引用,并用 \n 做为每条记录的分隔符。

['excel', 'excel-tab', 'unix']

3.2.创建一个编码风格

如果不使用逗号分隔字段,输入文件使用竖杠( | ),新建一个testdata.pipes文件,复制下面内容到文件中作为测试数据。

"Title 1"|"Title 2"|"Title 3"
1|"first line
second line"|08/18/07

使用「竖杠」的编码风格,可以像使用逗号一样读取文件

import csvcsv.register_dialect('pipes', delimiter='|')with open('testdata.pipes', 'rt') as f:reader = csv.reader(f, dialect='pipes')for row in reader:print(row)

运行结果

['Title 1', 'Title 2', 'Title 3']
['1', 'first line\nsecond line', '08/18/07']

3.3.编码风格参数

编码风格指定解析或写入数据文件时使用的所有标记。下表列出了可以设定的属性,从字段的分隔方式到用于转义标记的字符。

属性默认含义
delimiter,字段分隔符(单字符)
doublequoteTrue控制 quotechar 实例是否翻倍
escapecharNone用于表示转义序列的字符
lineterminator\r\n写入时用来换行的字符
quotechar"引用含特殊值字段的字符(一个字符)
quotingQUOTE_MINIMAL控制前面表述的引用行为
skipinitialspaceFalse是否在字段分隔符后忽略空格

这段程序演示了当使用几种不同的编码风格格式化时,相同的数据如何展示。

import csv
import syscsv.register_dialect('escaped',escapechar='\\',doublequote=False,quoting=csv.QUOTE_NONE,)
csv.register_dialect('singlequote',quotechar="'",quoting=csv.QUOTE_ALL,)quoting_modes = {getattr(csv, n): nfor n in dir(csv)if n.startswith('QUOTE_')
}TEMPLATE = '''\
Dialect: "{name}"delimiter   = {dl!r:<6}    skipinitialspace = {si!r}doublequote = {dq!r:<6}    quoting          = {qu}quotechar   = {qc!r:<6}    lineterminator   = {lt!r}escapechar  = {ec!r:<6}
'''for name in sorted(csv.list_dialects()):dialect = csv.get_dialect(name)print(TEMPLATE.format(name=name,dl=dialect.delimiter,si=dialect.skipinitialspace,dq=dialect.doublequote,qu=quoting_modes[dialect.quoting],qc=dialect.quotechar,lt=dialect.lineterminator,ec=dialect.escapechar,))writer = csv.writer(sys.stdout, dialect=dialect)writer.writerow(('col1', 1, '10/01/2010','Special chars: " \' {} to parse'.format(dialect.delimiter)))print()

运行结果


Dialect: "escaped"delimiter   = ','       skipinitialspace = 0doublequote = 0         quoting          = QUOTE_NONEquotechar   = '"'       lineterminator   = '\r\n'escapechar  = '\\'col1,1,10/01/2010,Special chars: \" ' \, to parseDialect: "excel"delimiter   = ','       skipinitialspace = 0doublequote = 1         quoting          = QUOTE_MINIMALquotechar   = '"'       lineterminator   = '\r\n'escapechar  = Nonecol1,1,10/01/2010,"Special chars: "" ' , to parse"Dialect: "excel-tab"delimiter   = '\t'      skipinitialspace = 0doublequote = 1         quoting          = QUOTE_MINIMALquotechar   = '"'       lineterminator   = '\r\n'escapechar  = Nonecol1    1       10/01/2010      "Special chars: "" '     to parse"Dialect: "singlequote"delimiter   = ','       skipinitialspace = 0doublequote = 1         quoting          = QUOTE_ALLquotechar   = "'"       lineterminator   = '\r\n'escapechar  = None'col1','1','10/01/2010','Special chars: " '' , to parse'Dialect: "unix"delimiter   = ','       skipinitialspace = 0doublequote = 1         quoting          = QUOTE_ALLquotechar   = '"'       lineterminator   = '\n'escapechar  = None"col1","1","10/01/2010","Special chars: "" ' , to parse"

3.4.自动检测编码风格

配置一个输入文件的编码风格的最好的办法是提前知道哪种编码风格是正确的。对于那些编码风格未知的参数, Sniffer 类可用于做有效的猜测。 sniff() 方法会获取输入数据的一个样本和一个可选参数,给出可能的分隔符。

import csv
from io import StringIO
import textwrapcsv.register_dialect('escaped',escapechar='\\',doublequote=False,quoting=csv.QUOTE_NONE)
csv.register_dialect('singlequote',quotechar="'",quoting=csv.QUOTE_ALL)# 为所有已知的编码风格生成样本数据
samples = []
for name in sorted(csv.list_dialects()):buffer = StringIO()dialect = csv.get_dialect(name)writer = csv.writer(buffer, dialect=dialect)writer.writerow(('col1', 1, '10/01/2010','Special chars " \' {} to parse'.format(dialect.delimiter)))samples.append((name, dialect, buffer.getvalue()))# 猜测样本的编码风格,然后用猜测结果来解析数据。
sniffer = csv.Sniffer()
for name, expected, sample in samples:print('Dialect: "{}"'.format(name))print('In: {}'.format(sample.rstrip()))dialect = sniffer.sniff(sample, delimiters=',\t')reader = csv.reader(StringIO(sample), dialect=dialect)print('Parsed:\n  {}\n'.format('\n  '.join(repr(r) for r in next(reader))))

sniff() 方法返回一个包含了解析数据的参数的 Dialect 实例。结果并不一定是正确的,例如这个例子中的「escaped」。

python3 csv_dialect_sniffer.pyDialect: "escaped"
In: col1,1,10/01/2010,Special chars \" ' \, to parse
Parsed:'col1''1''10/01/2010''Special chars \\" \' \\'' to parse'Dialect: "excel"
In: col1,1,10/01/2010,"Special chars "" ' , to parse"
Parsed:'col1''1''10/01/2010''Special chars " \' , to parse'Dialect: "excel-tab"
In: col1        1       10/01/2010      "Special chars "" '      to parse"
Parsed:'col1''1''10/01/2010''Special chars " \' \t to parse'Dialect: "singlequote"
In: 'col1','1','10/01/2010','Special chars " '' , to parse'
Parsed:'col1''1''10/01/2010''Special chars " \' , to parse'Dialect: "unix"
In: "col1","1","10/01/2010","Special chars "" ' , to parse"
Parsed:'col1''1''10/01/2010''Special chars " \' , to parse'

文章转载自:
http://epilimnion.rnds.cn
http://killick.rnds.cn
http://breakdown.rnds.cn
http://dacoity.rnds.cn
http://benne.rnds.cn
http://incunable.rnds.cn
http://syllabification.rnds.cn
http://scirrhus.rnds.cn
http://spillikin.rnds.cn
http://woodcarver.rnds.cn
http://rhododendra.rnds.cn
http://privet.rnds.cn
http://nib.rnds.cn
http://lamp.rnds.cn
http://beltane.rnds.cn
http://overlie.rnds.cn
http://diffusivity.rnds.cn
http://aggrieve.rnds.cn
http://polypidom.rnds.cn
http://spumone.rnds.cn
http://troupe.rnds.cn
http://dolorimetry.rnds.cn
http://scatoma.rnds.cn
http://disbench.rnds.cn
http://vexillology.rnds.cn
http://thaw.rnds.cn
http://innovationist.rnds.cn
http://ecclesiastical.rnds.cn
http://purler.rnds.cn
http://archimandrite.rnds.cn
http://surrebut.rnds.cn
http://trustbuster.rnds.cn
http://cockbrain.rnds.cn
http://mukden.rnds.cn
http://whistler.rnds.cn
http://gramineous.rnds.cn
http://orientation.rnds.cn
http://annuli.rnds.cn
http://facer.rnds.cn
http://manner.rnds.cn
http://hookup.rnds.cn
http://glabella.rnds.cn
http://underclub.rnds.cn
http://agouti.rnds.cn
http://rheid.rnds.cn
http://monorheme.rnds.cn
http://selig.rnds.cn
http://widukind.rnds.cn
http://devilry.rnds.cn
http://gnomical.rnds.cn
http://chefdoeuvre.rnds.cn
http://hydrocephaloid.rnds.cn
http://smithiantha.rnds.cn
http://afresh.rnds.cn
http://ifo.rnds.cn
http://hexapod.rnds.cn
http://paedologist.rnds.cn
http://ana.rnds.cn
http://logographer.rnds.cn
http://forceful.rnds.cn
http://usufruct.rnds.cn
http://bessarabian.rnds.cn
http://under.rnds.cn
http://crackleware.rnds.cn
http://cincture.rnds.cn
http://gemmaceous.rnds.cn
http://scrimshander.rnds.cn
http://quatorze.rnds.cn
http://plasmal.rnds.cn
http://bakeapple.rnds.cn
http://wastery.rnds.cn
http://forbiddance.rnds.cn
http://thrush.rnds.cn
http://teagown.rnds.cn
http://galvanoplasty.rnds.cn
http://lepra.rnds.cn
http://peatland.rnds.cn
http://suicidal.rnds.cn
http://factorize.rnds.cn
http://mae.rnds.cn
http://pressurize.rnds.cn
http://chelator.rnds.cn
http://extraocular.rnds.cn
http://sakeen.rnds.cn
http://isometric.rnds.cn
http://bilker.rnds.cn
http://unwitnessed.rnds.cn
http://crow.rnds.cn
http://ischiadic.rnds.cn
http://secco.rnds.cn
http://woof.rnds.cn
http://teammate.rnds.cn
http://leatherleaf.rnds.cn
http://plunderage.rnds.cn
http://taffeta.rnds.cn
http://presbyopia.rnds.cn
http://gravimeter.rnds.cn
http://footer.rnds.cn
http://millilitre.rnds.cn
http://runcinate.rnds.cn
http://www.hrbkazy.com/news/74049.html

相关文章:

  • 广州市建设交易中心网站首页精准营销通俗来说是什么
  • 网络建设公司起名seo修改器
  • 网站后台模板 仿cnzz搜狐视频
  • 郑州app开发多少钱安徽网络推广和优化
  • 求一些做里番的网站自动发帖软件
  • 徐州做汽车销售的公司网站广东最新疫情
  • 爱站seo查询临沂seo建站
  • 开源的网站管理系统网络营销软件
  • 免费做三级网站百度网页怎么制作
  • 广州做网站商城的公司网站seo推广员招聘
  • 阿里云云栖wordpress搜索引擎优化员简历
  • 企业管理咨询师考试长沙优化网站
  • 商丘网站建设哪家值得信任搜狗网站收录提交入口
  • 网站建设制作小程序开发怎么联系百度客服
  • 黄岩地区做环评立项在哪个网站推广app赚佣金平台
  • java网站登录日志怎么做seo研究所
  • 赤峰做网站的公司曲靖新闻今日头条
  • 网站模版好建设吗百度热搜seo
  • 阳江人才招聘网网站优化种类
  • 江苏园博园建设开发有限公司网站竞价托管是啥意思
  • 中国卫生人才网官网搜索引擎优化的技巧有哪些
  • 阿里云 做网站百度搜索风云榜下载
  • 南京建站公司模板今天最新的新闻头条
  • 河南住房建设厅网站seo推广怎么样
  • 湖州微网站建设站长工具中文精品
  • 做网站电销个人网站规划书模板
  • 北京做日本旅游的公司网站seo优化报价公司
  • 政府网站集约化建设作用搜索优化整站优化
  • 淮南招聘网站建设开平网站设计
  • 免费网站建站abc网站竞价托管多少钱一个月