【发布时间】:2014-09-19 00:22:44
【问题描述】:
我想列出一周内发布的不同股票数据。股票数据应该都在单独的数组中。不同的数组元素应该代表不同的日子,而数组本身应该代表不同的星期。例如week_1[55.5,23.1,234.8,,23.6]。到目前为止我尝试过的代码可以在下面查看,但不幸的是它根本不起作用。我总是收到错误:'str' object does not support item assignment。关于如何解决这个问题的任何简单想法?
Python 代码:
import datetime
# open csv file
lines = open("google.csv")
lines = lines.read()
lines = lines.split("\n")
i=0
while i<(len(lines)-1):
data = lines[i].split(',')
date2 = data[0].split('-')
week = date(int(date2[0]), int(date2[1]), int(date2[2])).isocalendar()[1]
# Create week array
weekN = "week_"+str(week)
weekN = []
# Get Stock Data
stockN = data[1]
#get day and add stock prices to week array
d = datetime.date(int(date2[0]), int(date2[1]), int(date2[2]))
if d.strftime("%a") == "Mon":
weekN[0] = stockN
if d.strftime("%a") == "Tue":
weekN[1] = stockN
if d.strftime("%a") == "Wed":
weekN[2] = stockN
if d.strftime("%a") == "Thu":
weekN[3] = stockN
if d.strftime("%a") == "Fri":
weekN[4] = stockN
i=i+1
CSV 文件:
2011-02-07,610.16,618.39,609.21,614.29,1799600,614.29
2011-02-04,610.15,611.44,606.61,610.98,1550800,610.98
2011-02-03,609.48,611.45,606.13,610.15,1495100,610.15
2011-02-02,611.00,614.34,607.53,612.00,1760700,612.00
2011-02-01,604.49,613.35,603.11,611.04,2745300,611.04
2011-01-31,603.60,604.47,595.55,600.36,2804900,600.36
2011-01-28,619.07,620.36,599.76,600.99,4231100,600.99
【问题讨论】:
-
这是因为
weekN是一个字符串。例如,当您执行weekN[1] = stockN时,您实际上是在告诉Python 尝试将索引1 处的字符更改为stockN的任何内容。然而,在 Python 中,字符串是不可变的——它们不能被改变。如果您打算将weekN作为一个列表,那么您有一个需要修复的错误。如果确实要修改字符串,则必须调整程序,以便始终返回新字符串而不是尝试修改。 -
但如果我要创建一个新数组,程序将无法正常工作
标签: python arrays sorting python-2.7 stocks