1. ホーム
  2. python

[解決済み】単項のオペランド型が悪い +:'str'

2022-01-18 22:28:46

質問

Python 2.7で書かれたコードで困っていることがあるのですが、解決できません。参照をint型に変換しているのですが、型例外が発生し続けます。 bad operand type for unary +: 'str'. どなたか助けてください。

import urllib2
import time
import datetime

stocksToPull = 'EBAY', 'AAPL'


def pullData(stock):
    try:
        print 'Currently pulling', stock
        print str(datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S'))
        urlToVisit = 'http://chartapi.finance.yahoo.com/instrument/1.0/' + \
            stock + '/chartdata;type=quote;range=3y/csv'
        saveFileLine = stock + '.txt'

        try:
            readExistingData = open(saveFileLine, 'r').read()
            splitExisting = readExistingData.split('\n')
            mostRecentLine = splitExisting[-2]
            lastUnix = mostRecentLine.split(',')[0]
        except Exception, e:
            print str(e)
            time.sleep(1)
            lastUnix = 0

        saveFile = open(saveFileLine, 'a')
        sourceCode = urllib2.urlopen(urlToVisit).read()
        splitSource = sourceCode.split('\n')

        for eachLine in splitSource:
            if 'values' not in eachLine:
                splitLine = eachLine.split(',')
                if len(splitLine) == 6:
                    if int(splitLine[0]) > int(lastUnix):
                        lineToWrite = eachLine + '\n'
                        saveFile.write(lineToWrite)
        saveFile.close()

        print 'Pulled', + stock
        print 'Sleeping....'
        print str(datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S'))
        time.sleep(120)

    except Exception, e:
        print 'main loop', str(e)


for eachStock in stocksToPull:
    pullData(eachStock)

オペランド例外にぶつかる bad operand type for unary +: 'str' になったとき if int(splitLine[0]) > int(lastUnix): 比較する両方の値がint型として出力されるにもかかわらず。

以下は例外応答です。

Currently pulling EBAY
2013-12-21 11:32:40
Pulled main loop bad operand type for unary +: 'str'
Currently pulling AAPL
2013-12-21 11:32:41
Pulled main loop bad operand type for unary +: 'str'`

解決するには?

あなたはこう言います。 if int(splitLine[0]) > int(lastUnix):

print 'Pulled', + stock

>>> stock = "AAAA" >>> print 'Pulled', stock Pulled AAAA

>>> print 'Pulled ' + stock Pulled AAAA