Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError: coercing to Unicode: need string or buffer, int found

I have 2 APIs. I am fetching data from them. I want to assign particular code parts to string so that life became easier while coding. Here is the code:

import urllib2 import json  urlIncomeStatement = 'http://dev.c0l.in:8888' apiIncomeStatement = urllib2.urlopen(urlIncomeStatement) dataIncomeStatement = json.load(apiIncomeStatement)  urlFinancialPosition = 'http://dev.c0l.in:9999' apiFinancialPosition = urllib2.urlopen(urlFinancialPosition) dataFinancialPositiont = json.load(apiFinancialPosition)  for item in dataIncomeStatement:     name = item['company']['name']     interestPayable = int(item['company']['interest_payable'])     interestReceivable = int(item['company']['interest_receivable'])     sales = int(item['company']['interest_receivable'])     expenses = int(item['company']['expenses'])     openingStock = int(item['company']['opening_stock'])     closingStock = int(item['company']['closing_stock'])     sum1 = sales + expenses      if item['sector'] == 'technology':         name + "'s interest payable - " + interestPayable         name + "'s interest receivable - " + interestReceivable         name + "'s interest receivable - " + sales         name + "'s interest receivable - " + expenses         name + "'s interest receivable - " + openingStock         name + "'s interest receivable - " + closingStock  print sum1 

In result I get:

Traceback (most recent call last):   File "C:/Users/gnite_000/Desktop/test.py", line 25, in <module>     name + "'s interest payable - " + interestPayable TypeError: coercing to Unicode: need string or buffer, int found 
like image 492
Marks Gniteckis Avatar asked Dec 03 '14 14:12

Marks Gniteckis


2 Answers

You have to add '%s' % and () to each line, like this:

'%s' % (name + "'s interest payable - " + interestPayable) 
like image 37
Maryam Homayouni Avatar answered Sep 24 '22 02:09

Maryam Homayouni


The problem might have to do with the fact that you are adding ints to strings here

    if item['sector'] == 'technology':         name + "'s interest payable - " + interestPayable         name + "'s interest receivable - " + interestReceivable         name + "'s interest receivable - " + sales         name + "'s interest receivable - " + expenses         name + "'s interest receivable - " + openingStock         name + "'s interest receivable - " + closingStock 

As far as I'm aware, the interpretor cannot implicitly convert an int to a string. This might work, though,

       str(name) + "'s interest receivable - " + str(closingStock) 

On which I'm assuming Python > 3.0

like image 98
TravelingMaker Avatar answered Sep 23 '22 02:09

TravelingMaker