这里会显示出您选择的修订版和当前版本之间的差别。
— |
python-files:csv [2010/06/02 01:18] (当前版本) |
||
---|---|---|---|
行 1: | 行 1: | ||
+ | ====== Python CSV文件处理/读写 ====== | ||
+ | CSV全称为“Comma Separated Values",是一种格式化的文件,由行和列组成,分隔符可以根据需要来变化。 \\ | ||
+ | 如下面为一csv文件: | ||
+ | <file> | ||
+ | Title,Release Date,Director | ||
+ | And Now For Something Completely Different,1971,Ian MacNaughton | ||
+ | Monty Python And The Holy Grail,1975,Terry Gilliam and Terry Jones | ||
+ | Monty Python's Life Of Brian,1979,Terry Jones | ||
+ | Monty Python Live At The Hollywood Bowl,1982,Terry Hughes | ||
+ | Monty Python's The Meaning Of Life,1983,Terry Jones | ||
+ | </file> | ||
+ | |||
+ | ===== 打印发行日期及标题。===== | ||
+ | |||
+ | 逐行处理: | ||
+ | <code python> | ||
+ | for line in open("samples/sample.csv"): | ||
+ | title, year, director = line.split(",") | ||
+ | print year, title | ||
+ | </code> | ||
+ | |||
+ | =====使用csv模块处理:===== | ||
+ | |||
+ | <code python> | ||
+ | import csv | ||
+ | reader = csv.reader(open("samples/sample.csv")) | ||
+ | for title, year, director in reader: | ||
+ | print year, title | ||
+ | </code> | ||
+ | |||
+ | =====改变分隔符===== | ||
+ | 创建一csv.excel的子类,并修改分隔符为";" | ||
+ | <code python> | ||
+ | # File: csv-example-2.py | ||
+ | import csv | ||
+ | class SKV(csv.excel): | ||
+ | # like excel, but uses semicolons | ||
+ | delimiter = ";" | ||
+ | |||
+ | csv.register_dialect("SKV", SKV) | ||
+ | reader = csv.reader(open("samples/sample.skv"), "SKV") | ||
+ | for title, year, director in reader: | ||
+ | print year, title | ||
+ | </code> | ||
+ | |||
+ | 如果仅仅仅是改变一两个参数,则可以直接在reader参数中设置,如下: | ||
+ | <code python> | ||
+ | # File: csv-example-3.py | ||
+ | |||
+ | import csv | ||
+ | |||
+ | reader = csv.reader(open("samples/sample.skv"), delimiter=";") | ||
+ | |||
+ | for title, year, director in reader: | ||
+ | print year, title | ||
+ | </code> | ||
+ | |||
+ | ===== 将数据存为CSV格式 ===== | ||
+ | 通过csv.writer来生成一csv文件。 | ||
+ | <code python> | ||
+ | # File: csv-example-4.py | ||
+ | |||
+ | import csv | ||
+ | import sys | ||
+ | |||
+ | data = [ | ||
+ | ("And Now For Something Completely Different", 1971, "Ian MacNaughton"), | ||
+ | ("Monty Python And The Holy Grail", 1975, "Terry Gilliam, Terry Jones"), | ||
+ | ("Monty Python's Life Of Brian", 1979, "Terry Jones"), | ||
+ | ("Monty Python Live At The Hollywood Bowl", 1982, "Terry Hughes"), | ||
+ | ("Monty Python's The Meaning Of Life", 1983, "Terry Jones") | ||
+ | ] | ||
+ | |||
+ | writer = csv.writer(sys.stdout) | ||
+ | |||
+ | for item in data: | ||
+ | writer.writerow(item) | ||
+ | </code> |