python之数据处理
1.读写 CSV 数据,对于大多数的 CSV 格式的数据读写问题,都可以使用 csv 库。
import csv with open('filename.csv')as f: f_csv = csv.reader(f) headers = next(f_csv) for row in f_csv: #row 为列表形式 import csv with open('filename.csv') as f: f_csv = csv.DictReader(f) for row in f_csv:#row为字典形式 print(row['stock'])
2.写入 CSV 数据,可以使用 csv 模块,先创建一个 writer对象。
import csv headers = ['Symbol','Price','Date','Time','Change','Volume'] rows = [('AA', 39.48, '6/11/2017', '9:36am', -0.18, 181800), ('AIG', 71.38, '6/11/2017', '9:36am', -0.15, 195500), ('AXP', 62.58, '6/11/2017', '9:36am', -0.46, 935000), ] with open('filename.csv','w')as f: f_csv = csv.writer(f) f_csv.writerow(headers) f_csv.writerows(rows) #如果是字典数据 import csv headers = ['Symbol', 'Price', 'Date', 'Time', 'Change', 'Volume'] rows = [{'Symbol':'AA', 'Price':39.48, 'Date':'6/11/2017', 'Time':'9:36am', 'Change':-0.18, 'Volume':181800}, {'Symbol':'AIG', 'Price': 71.38, 'Date':'6/11/2017', 'Time':'9:36am', 'Change':-0.15, 'Volume': 195500}, {'Symbol':'AXP', 'Price': 62.58, 'Date':'6/11/2017', 'Time':'9:36am', 'Change':-0.46, 'Volume': 935000},] with open('filename.csv','w')as f: f_csv=csv.DictWriter(f,headers) f_csv.writeheader() f_csv.writerows(rows)
3.读写 JSON(JavaScript Object Notation) 编码格式的数据
import json data ={'name':'songshichao', 'sex':'man', 'age':18} json_str = json.dumps(data) #Python 数据结构转换为json
data = json.loads(json_str)#将一个 JSON 编码的字符串转换回一个Python 数据结构
4,.如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码 JSON 数据
with open('data.json', 'w') as f: json.dump(data, f) with open('data.json', 'r') as f: data = json.load(f)
5.当数据的嵌套结构层次很深或者包含大量的字段时,为了解决这个问题, 可以考虑使用 pprint 模块的 pprint() 函数来代替普通的 print() 函数
from urllib.request import urlopen import json from pprint import pprint u = urlopen('http://search.....') resp =json.loads(u.read().decode('utf-8')) pprint(resp) #一般来讲,JSON 解码会根据提供的数据创建 dicts 或 lists。如果你想要创建其他类型的对象,可以给 json.loads() 传递 object pairs hook 或 object hook 参数
6.解析简单的 XML 数据,使用 xml.etree.ElementTree 模块从简单的 XML 文档中提取数据
import requests from xml.etree.ElementTree import parse u = requests.get('http://planetpython.org/rss20.xml') doc = parse(u) for item in doc.iterfind('channel/item'): title = item.findtext('title') date = item.findtext('pubDate') link = item.findtext('link') print(title) print(date) print(link) print()