1. 程式人生 > >python csv模塊

python csv模塊

dia 轉義 char writer limit bsp names min fields

  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模塊