再次运行程序,你应该能够看到像下面这样的字典流:
{ 'name':'BA', 'price':98.35, 'change':0.16 } { 'name':'AA', 'price':39.63, 'change':-0.03 } { 'name':'XOM', 'price':82.45, 'change': -0.23 } { 'name':'PG', 'price':62.95, 'change':-0.12 } ... 练习 6.11:筛选数据创建一个筛选数据的函数。示例:
# ticker.py ... def filter_symbols(rows, names): for row in rows: if row['name'] in names: yield row使用该函数可以筛选出投资组合中的股票:
import report portfolio = report.read_portfolio('Data/portfolio.csv') rows = parse_stock_data(follow('Data/stocklog.csv')) rows = filter_symbols(rows, portfolio) for row in rows: print(row) 练习 6.12:整合所有的代码请在 ticker.py 文件中编写函数 ticker(portfile, logfile, fmt) ,该函数根据给定的投资组合、日志文件和表格格式创建实时的股票报价器。示例:
>>> from ticker import ticker >>> ticker('Data/portfolio.csv', 'Data/stocklog.csv', 'txt') Name Price Change ---------- ---------- ---------- GE 37.14 -0.18 MSFT 29.96 -0.09 CAT 78.03 -0.49 AA 39.34 -0.32 ... >>> ticker('Data/portfolio.csv', 'Data/stocklog.csv', 'csv') Name,Price,Change IBM,102.79,-0.28 CAT,78.04,-0.48 AA,39.35,-0.31 CAT,78.05,-0.47 ... 讨论心得体会:你可以创建各种生成器函数,并把它们链接在一起执行涉及数据流的管道处理。另外,你可以创建一个函数,把一系列的管道阶段打包到一个单独的函数中调用(例如 parse_stock_data() 函数)。
注:完整翻译见 https://github.com/codists/practical-python-zh