csv配置文件

版权声明:qq:1263351411 https://blog.csdn.net/u013008795/article/details/89789124

csv配置文件

参看RFC4180 https://www.ietf.org/rfc/rfc4180.txt

  1. CSV是一个被行分割符、列分隔符划分成行和列的文本文件
  2. CSV不指定字符编码
    行分割符:\r\n,最后一行可以没有换行符
    列分隔符: 为逗号遇制表符。
  3. 每一行称为一条记录record
    字段:可以使用双引号括起来,也可以不使用,如果字段中出现了双引号、逗号、换行符必须使用双引号括起来。如果字段的值为双引号,使用两个双引号表示一个转义。
    表头:可以有也可以没有。和字段列对齐就行。
  4. 一般后缀为.csv的文件称为csv配置文件
    简单的csv文件排版如下
"id","name","age"
"1","张三","12"
"2","xdd","18"
"3","aiqiyi","200","看电影"
  • 手动生成csv文件
from pathlib import Path
p = Path("a/b/one.csv")
csv_body = """\
di,name,age,comment
"1","张三","12"
"2","xdd","18"
"3","aiqiyi","200","看电影

www.aiqiyi.com
"
"""
parent = p.parent
if not parent.exists():
    parent.mkdir(parents=True)
p.write_text(csv_body)   

csv模块

导入模块方法:

import csv 

常用方法

  • reader(csvfile,dialect=‘excel’,**fmtparams)->_csv.reader对象。 #读取csv文件

    • csvfile:csv文件描述符对象。
    • dialect:默认为excel方言
      • delimiter:列分隔符,逗号
      • lineterminator:行分隔符\r\n
      • quotechar:字段的引用符号,缺省为:"双引号
      • 双引号的处理
        • doublequote 双引号的处理,默认为True。如果碰到数据中有双引号,而quotechar也是双引号,True则使用2个双引号表示,False表示使用转义字符作为双引号的前缀
        • escapechar 一个转义字符,默认为None
        • writer = csv.writer(f,doublequote=False,escapechar=’@’)遇到双引号,则必须提供转义字符
      • quoting 指定双引号的规则
        • QUOTE_ALL 所有字段
        • QUOTE_MINIMAL特殊字符字段,Excel方言使用该规则
        • QUOTE_NONNUMERIC非数字字段
        • QUOTE_NONE都不使用引号。

    简单示例:

    import csv
    with open("a/b/one.csv") as p:
        for i in csv.reader(p):
            print(i)
    

    输出结果为:
    csv001

  • writer(csvfile,dialect=‘excel’,**fmtparams)->DictWrite的实例。 #写入csv文件

    • Dictwrite对象主要方法:
      • writerow(row) 将rwo,写入scv文件,单行写入
        • row 一个可迭代对象,可迭代对象的每一个元素,将作为csv行的每一个元素。
          • 注意:windows下会多出一个\r,解决办法open(‘text.csv’,‘w’,newline=’’)
      • writerows(rows) 将rows,写入csv文件,多行写入
    • 简单示例:
    import csv
    rows = [
        ["name","age","like"],
        ["张三","18","打篮球"],
        ("李四","19","游泳","吃饭"),
        "abcde",
        ((1,),(2,))
    ]
    row = rows[0]
    with open("a/b/two.csv","w",newline="") as p:
        cv = csv.writer(p)
        cv.writerow(row) #单行写入
        cv.writerows(rows[1:]) #多行写入
        
    with open("a/b/two.csv") as p:
        for i in csv.reader(p):
            print(i)
    

    输出结果为:
    csv002

猜你喜欢

转载自blog.csdn.net/u013008795/article/details/89789124