CSV(Comma-Separated Values)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与Excel文件不同,CSV文件中:
- 值没有类型,所有值都是字符串
- 不能指定字体颜色等样式
- 不能指定单元格的宽高,不能合并单元格
- 没有多个工作表
- 不能嵌入图像图表
import csv filename = 'F:/example .csv' with open(filename) as f: reader = csv.reader(f) print(list(reader))
注意:不能直接将文件名字符串传递给csv.reader()函数。如需访问,将其传递给list()
1.1.1在for循环中遍历
import csv filename = 'F:/example.csv' with open(filename) as f: reader = csv.reader(f) for row in reader: # 行号从1开始 print(reader.line_num, row)
运行结果
1 ['AKST', 'Max TemperatureF', 'Mean TemperatureF', 'Min TemperatureF', 'Max Dew PointF', 'MeanDew PointF', 'Min DewpointF', 'Max Humidity', ' Mean Humidity', ' Min Humidity', ' Max Sea Level PressureIn', ' Mean Sea Level PressureIn', ' Min Sea Level PressureIn', ' Max VisibilityMiles', ' Mean VisibilityMiles', ' Min VisibilityMiles', ' Max Wind SpeedMPH', ' Mean Wind SpeedMPH', ' Max Gust SpeedMPH', 'PrecipitationIn', ' CloudCover', ' Events', ' WindDirDegrees'] 2 ['2014-1-1', '46', '42', '37', '40', '38', '36', '97', '86', '76', '29.95', '29.77', '29.57', '10', '8', '2', '25', '14', '36', '0.69', '8', 'Rain', '138']
前面的数字是行号,从1开始,可以用
reader.line_num
获取。要注意的是,reader只能被遍历一次。由于reader是可迭代对象,可以使用
next
方法一次获取一行。import csv filename = 'F:/example.csv' with open(filename) as f: reader = csv.reader(f) # 读取一行,下面的reader中已经没有该行了 head_row = next(reader) for row in reader: # 行号从2开始 print(reader.line_num, row)
有reader可以读取,当然也有writer可以写入。一次写入一行,一次写入多行都可以。
import csv # 使用数字和字符串的数字都可以 datas = [['name', 'age'], ['Bob', 14], ['Tom', 23], ['Jerry', '18']] with open('example.csv', 'w', newline='') as f: writer = csv.writer(f) for row in datas: writer.writerow(row) # 还可以写入多行 writer.writerows(datas)
如果不指定
newline=''
,则每写入一行将有一空行被写入。上面的代码生成如下内容。name,age Bob,14 Tom,23 Jerry,18 name,age Bob,14 Tom,23 Jerry,18
1.2.1 delimiter 和 lineterminator关键字参数
使用制表符代替逗号来分隔单元格。
import csv # 使用数字和字符串的数字都可以 datas = [['name', 'age'], ['Bob', 14], ['Tom', 23], ['Jerry', '18']] with open('example.csv', 'w', newline='') as f: writer = csv.writer(f,delimiter='\t',lineterminator='\n\n') for row in datas: writer.writerow(row)
name age Bob 14 Tom 23 Jerry 18
JSON在python中分别由list和dict组成。
使用 JSON 函数需要导入 json 库:import json。
函数 | 描述 |
---|---|
json.dumps | 将 Python 对象编码成 JSON 字符串 |
json.loads | 将已编码的 JSON 字符串解码为 Python 对象 |
json.dumps 用于将 Python 对象编码成 JSON 字符串。
语法
json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
实例
以下实例将数组编码为 JSON 格式数据:
import json data = [ { 'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4, 'e' : 5 } ] json = json.dumps(data) print json
以上代码执行结果为:[{"a": 1, "c": 3, "b": 2, "e": 5, "d": 4}]
使用参数让 JSON 数据格式化输出:
>>> import json >>> print json.dumps({'a': 'Runoob', 'b': 7}, sort_keys=True, indent=4, separators=(',', ': ')) { "a": "Runoob", "b": 7 }
json.loads 用于解码 JSON 数据。该函数返回 Python 字段的数据类型。
实例
以下实例展示了Python 如何解码 JSON 对象:
import json jsonData = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; text = json.loads(jsonData) print text
以上代码执行结果为:
{u'a': 1,u'c' : 3, u'b': 2, u'e': 5, u'd': 4}
python 原始类型向 json 类型的转化对照表:
Python | JSON |
---|---|
dict | object |
list,tuple | array |
str, unicode | string |
int, long, float | number |
True | true |
False | false |
None | null |