收盘价走势图,TypeError: object of type ‘int’ has no len()
《Python编程从入门到实践》,第十六章16.2.6
当直接运行书本上16.2.6代码时,可能会出现 TypeError: object of type 'int' has no len() 错误,这是因为Pygal 的Line chart,横坐标必须为字符串序列,而书中代码month[]列表转换成了int型。
因此,解决办法是在绘图前将x_unique列表转换成元素为str型列表,对此修改代码如下:
--snip--
x_unique_str = int_str(x_unique) #将整型列表转换为字符串型列表,问题解决
line_chart.x_labels = x_unique_str
def int_str(list_0): #定义一个将元素为整数的列表转换为字符串型列表的函数
list_1 = []
for x in list_0:
x_str = str(x)
list_1.append(x_str)
return list_1
完整代码如下:
import json
import pygal
import math
from itertools import groupby
# creat five lists, store date and close price, respectively
dates = []
months = []
weeks = [<