python csv模块

Posted 魂~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python csv模块相关的知识,希望对你有一定的参考价值。

  1 import csv  # Comma Separated Value
  2 
  3 # class Dialect
  4 #     delimiter = None           # 分隔符
  5 #     doublequote = None         # 元素是引用符,双倍的引用符。默认是true,如果改为false就需要设置分隔符,否则报错。
  6 #     escapechar = None          # 转义符
  7 #     lineterminator = None      # 行终止符
  8 #     quotechar = None           # 引用符
  9 #     quoting = None             # 引用方式
 10 #     skipinitialspace = None    # 忽略分割后面的空格,默认是flase
 11 #
 12 #
 13 # QUOTE_ALL = 1         # 全加引号
 14 # QUOTE_MINIMAL = 0     # 分隔符和引用符号加双引号
 15 # QUOTE_NONE = 3        # 全部不加双引号,分隔符要加转义符
 16 # QUOTE_NONNUMERIC = 2  # 数字不加引号
 17 #
 18 # csv.QUOTE_MINIMAL means only when required, for example, when a field contains either the quotechar or the delimiter
 19 # csv.QUOTE_ALL means that quotes are always placed around fields.
 20 # csv.QUOTE_NONNUMERIC means that quotes are always placed around fields which do not parse as integers or floating point numbers.
 21 # csv.QUOTE_NONE means that quotes are never placed around fields.
 22 
 23 
 24 # 1、写一个csv文件  quoting=csv.QUOTE_ALL
 25 with open("1.csv", "w", newline="") as f:
 26     # dialect为打开csv文件的方式,默认是excel,delimiter="\t"参数指写入的时候的分隔符
 27     # csv_writer = csv.writer(f, dialect="excel-tab")
 28     # csv_writer = csv.writer(f, dialect="excel", delimiter="\t")
 29     csv_writer = csv.writer(f, dialect="excel", quoting=csv.QUOTE_ALL)
 30     # csv文件插入一行数据,把下面列表中的每一项放入一个单元格(可以用循环插入多行)
 31     csv_writer.writerow(["A", "B", ",", 5])
 32     csv_writer.writerow(["E", "F", ", 6])
 33 
 34 with open("1.csv", "rb") as f:
 35     print(f.read())
 36     # b‘"A","B",",","5"\r\n"E","F","""","6"\r\n‘
 37 
 38 with open("1.csv", "r") as f:
 39     print(f.read())
 40     # "A","B",",","5"
 41     # "E
 42 
 43 # 2、写一个csv文件  quoting=csv.QUOTE_MINIMAL
 44 with open("2.csv", "w", newline="") as f:
 45     # dialect为打开csv文件的方式,默认是excel,delimiter="\t"参数指写入的时候的分隔符
 46     # csv_writer = csv.writer(f, dialect="excel-tab")
 47     # csv_writer = csv.writer(f, dialect="excel", delimiter="\t")
 48     csv_writer = csv.writer(f, dialect="excel", quoting=csv.QUOTE_MINIMAL)
 49     # csv文件插入一行数据,把下面列表中的每一项放入一个单元格(可以用循环插入多行)
 50     csv_writer.writerow(["A", "B", ",", 5])
 51     csv_writer.writerow(["E", "F", ", 6])
 52 
 53 with open("2.csv", "rb") as f:
 54     print(f.read())
 55     # b‘A,B,",",5\r\nE,F,"""",6\r\n‘
 56 
 57 with open("2.csv", "r") as f:
 58     print(f.read())
 59     # A,B,",",5
 60     # E,F,"""",6
 61 
 62 
 63 # 3、写一个csv文件  quoting=csv.QUOTE_NONE
 64 with open("3.csv", "w", newline="") as f:
 65     # dialect为打开csv文件的方式,默认是excel,delimiter="\t"参数指写入的时候的分隔符
 66     # csv_writer = csv.writer(f, dialect="excel-tab")
 67     # csv_writer = csv.writer(f, dialect="excel", delimiter="\t")
 68     csv_writer = csv.writer(f, dialect="excel", quoting=csv.QUOTE_NONE, escapechar=\\)  # 这种方式需要设置转义符
 69     # csv文件插入一行数据,把下面列表中的每一项放入一个单元格(可以用循环插入多行)
 70     csv_writer.writerow(["A", "B", ",", 5])
 71     csv_writer.writerow(["E", "F", ", 6])
 72 
 73 with open("3.csv", "rb") as f:
 74     print(f.read())
 75     # b‘A,B,\\,,5\r\nE,F,\\",6\r\n‘
 76 
 77 with open("3.csv", "r") as f:
 78     print(f.read())
 79     # A,B,\,,5
 80     # E,F,\",6
 81 
 82 
 83 # 4、写一个csv文件  quoting=csv.QUOTE_NONNUMERIC
 84 with open("4.csv", "w", newline="") as f:
 85     # dialect为打开csv文件的方式,默认是excel,delimiter="\t"参数指写入的时候的分隔符
 86     # csv_writer = csv.writer(f, dialect="excel-tab")
 87     # csv_writer = csv.writer(f, dialect="excel", delimiter="\t")
 88     csv_writer = csv.writer(f, dialect="excel", quoting=csv.QUOTE_NONNUMERIC)
 89     # csv文件插入一行数据,把下面列表中的每一项放入一个单元格(可以用循环插入多行)
 90     csv_writer.writerow(["A", "B", ",", 5])
 91     csv_writer.writerow(["E", "F", ", 6])
 92 
 93 with open("4.csv", "rb") as f:
 94     print(f.read())
 95     # b‘"A","B",",",5\r\n"E","F","""",6\r\n‘
 96 
 97 with open("4.csv", "r") as f:
 98     print(f.read())
 99     # "A","B",",",5
100     # "E","F","""",6
101 
102 
103 # 5、写一个csv文件  quoting=默认 (quoting=csv.QUOTE_MINIMAL)
104 with open("5.csv", "w", newline="") as f:
105     # dialect为打开csv文件的方式,默认是excel,delimiter="\t"参数指写入的时候的分隔符
106     # csv_writer = csv.writer(f, dialect="excel-tab")
107     # csv_writer = csv.writer(f, dialect="excel", delimiter="\t")
108     csv_writer = csv.writer(f, dialect="excel")
109     # csv文件插入一行数据,把下面列表中的每一项放入一个单元格(可以用循环插入多行)
110     csv_writer.writerow(["A", "B", ",", 5])
111     csv_writer.writerow(["E", "F", ", 6])
112 
113 with open("5.csv", "rb") as f:
114     print(f.read())
115     # b‘A,B,",",5\r\nE,F,"""",6\r\n‘
116 
117 with open("5.csv", "r") as f:
118     print(f.read())
119     # A,B,",",5
120     # E,F,"""",6
121 
122 
123 # 6、写一个csv文件
124 with open("6.csv", "w", newline="") as f:
125     # dialect为打开csv文件的方式,默认是excel,delimiter="\t"参数指写入的时候的分隔符
126     # csv_writer = csv.writer(f, dialect="excel-tab")
127     # csv_writer = csv.writer(f, dialect="excel", delimiter="\t")
128     csv_writer = csv.writer(f)
129     # csv文件插入一行数据,把下面列表中的每一项放入一个单元格(可以用循环插入多行)
130     csv_writer.writerow(["A", "B", ",", 5])
131     csv_writer.writerow(["E", "F", ", 6])
132 
133 with open("6.csv", "rb") as f:
134     print(f.read())
135     # b‘A,B,",",5\r\nE,F,"""",6\r\n‘
136 
137 with open("6.csv", "r") as f:
138     print(f.read())
139     # A,B,",",5
140     # E,F,"""",6
141 
142 
143 # 7、注册风格
144 csv.register_dialect(mystyle, delimiter=,, quoting=csv.QUOTE_MINIMAL)
145 with open("7.csv", "w", newline="") as f:
146     # dialect为打开csv文件的方式,默认是excel,delimiter="\t"参数指写入的时候的分隔符
147     # csv_writer = csv.writer(f, dialect="excel-tab")
148     # csv_writer = csv.writer(f, dialect="excel", delimiter="\t")
149     csv_writer = csv.writer(f, dialect="mystyle")
150     # csv文件插入一行数据,把下面列表中的每一项放入一个单元格(可以用循环插入多行)
151     csv_writer.writerow(["A", "B", ",", 5])
152     csv_writer.writerow(["E", "F", """, 6])
153 
154 with open("7.csv", "rb") as f:
155     print(f.read())
156     # b‘A,B,",",5\r\nE,F,"""""""",6\r\n‘
157 
158 with open("7.csv", "r") as f:
159     print(f.read())
160     # A,B,",",5
161     # E,F,"""""""",6
162 
163 
164 # 8、读取csv文件
165 csv.register_dialect(mystyle, delimiter=,, quoting=csv.QUOTE_MINIMAL)
166 with open(7.csv, newline=‘‘) as f:
167     reader = csv.reader(f, mystyle)
168     for r in reader:
169         print(r, type(r))
170         # [‘A‘, ‘B‘, ‘,‘, ‘5‘] <class ‘list‘>
171         # [‘E‘, ‘F‘, ‘"‘, ‘6‘] <class ‘list‘>
172 
173 
174 # 9、读取csv文件
175 for row in csv.reader([one, two, three, one, two, three], skipinitialspace=True):  # skipinitialspace忽略空格
176     print(row, type(row))
177     # [‘one‘, ‘two‘, ‘three‘] <class ‘list‘>
178     # [‘one‘, ‘two‘, ‘three‘] <class ‘list‘>
179 
180 
181 # 10、DictWriter
182 with open(8.csv, w, newline=‘‘) as csv_file:
183     fieldnames = [first_name, last_name]
184     writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
185 
186     writer.writeheader()
187     writer.writerow({first_name: Baked, last_name: Beans})
188     writer.writerow({first_name: Lovely, last_name: Spam})
189     writer.writerow({first_name: Wonderful, last_name: Spam})
190     writer.writerows([{first_name: Wonderful, last_name: Spam}, {first_name: Wonderful, last_name: Spam}])
191 
192 # 11、DictReader
193 with open(8.csv, newline=‘‘) as csv_file:
194     reader = csv.DictReader(csv_file)
195     for row in reader:
196         print(row)  # OrderedDict([(‘first_name‘, ‘Baked‘), (‘last_name‘, ‘Beans‘)])
197         print(row[first_name], row[last_name])

 

以上是关于python csv模块的主要内容,如果未能解决你的问题,请参考以下文章

使用Python模块儿csv快速处理csv文件

python csv 模块reader后转换为列表

Python 2 和 3 csv 模块文本二进制模式向后兼容

Python使用Flask框架,结合Highchart,搭配数据功能模块处理csv数据

常用python日期日志获取内容循环的代码片段

Python之csv模块