我一直在尝试运行以下代码,但已广泛查看了堆栈交换和Google,但无法找到此代码一直给出以下错误的原因。
main loop cannot concatenate 'str' and 'tuple' objects
我在Ubuntu上使用Python 2.7.6版。
>>> print (sys.version)
2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2]
非常感谢任何帮助。提前致谢。
import urllib2
import time
stocksToPull ='AAPL','GOOG','MSFT','CMG','AMZN','EBAY','TSLA'
def pullData(stock):
try:
fileLine = stock+'.txt'
urlToVisit = 'http://ichart.finance.yahoo.com/table.csv?s='+stocksToPull
print urlToVisit
sourceCode = urllib2.urlopen(urlToVisit).read()
splitSource = sourceCode.split('\n')
for eachLine in splitSource:
splitLine = eachLine.split(',')
if len(splitLine)==7:
if 'value' not in eachLine:
saveFile = open(fileLine,'a')
lineToWrite = eachLine+'\n'
saveFile.write(lineToWrite)
print 'Pulled',stocksToPull
print 'sleeping'
time.sleep(1)
except Exception,e:
print 'main loop',str(e)
for eachStock in stocksToPull:
pullData('eachStock')
答案 0 :(得分:1)
您无法将stocksToPull ='AAPL','GOOG','MSFT','CMG','AMZN','EBAY','TSLA'
添加到'http://ichart.finance.yahoo.com/table.csv?s='
。您正在尝试将元组stocksToPull添加到字符串中。也许你的意思是
urlToVisit = 'http://ichart.finance.yahoo.com/table.csv?s='+stock
答案 1 :(得分:0)
问题是
urlToVisit = 'http://ichart.finance.yahoo.com/table.csv?s='+stocksToPull
您正在尝试将元组直接连接到字符串。你需要做一些像
这样的事情urlToVisit = 'http://ichart.finance.yahoo.com/table.csv?s=' + stock
代替。
从文体上来说,按照你的方式捕捉和打印错误也会使问题变得模糊,因为你正在压制堆栈跟踪,告诉你实际发生问题的行号。
编辑:感谢@ chill0r的评论,我看到你正在使用元组stocksToPull
而不是函数变量stock
,这就是你的意思。更新了答案以反映出来。
答案 2 :(得分:0)
urlToVisit = 'http://ichart.finance.yahoo.com/table.csv?s='+stocksToPull
stocksToPull
变量是一个字符串元组。您无法将URL字符串与元组连接起来。