0

I'm trying to manipulate a list of items in python but im getting the error "AttributeError: 'list' object has no attribute 'split'" I understand that list does not understand .split but i don't know what else to do. Below is a copy paste of the relevant part of my code.

tourl = 'http://data.bitcoinity.org/chart_data'
tovalues = {'timespan':'24h','resolution':'hour','currency':'USD','exchange':'all','mining_pool':'all','compare':'no','data_type':'price_volume','chart_type':'line_bar','smoothing':'linear','chart_types':'ccacdfcdaa'}
todata = urllib.urlencode(tovalues)
toreq = urllib2.Request(tourl, todata)
tores = urllib2.urlopen(toreq)
tores2 = tores.read()
tos = json.loads(tores2)
tola = tos["data"]
for item in tola:
    ting = item.get("values")
    ting.split(',')[2]       <-----ERROR
    print(ting)

To understand what i'm trying to do you will also need to see the json data. Ting outputs this:

[
  [1379955600000L, 123.107310846774], [1379959200000L, 124.092526428571],
  [1379962800000L, 125.539504822835], [1379966400000L, 126.27024617931],
  [1379970000000L, 126.723474983766], [1379973600000L, 126.242406356837],
  [1379977200000L, 124.788410570987], [1379980800000L, 126.810084904632],
  [1379984400000L, 128.270580796748], [1379988000000L, 127.892411269036],
  [1379991600000L, 126.140579640523], [1379995200000L, 126.513705084746],
  [1379998800000L, 128.695124951923], [1380002400000L, 128.709738051044],
  [1380006000000L, 125.987767097378], [1380009600000L, 124.323433535528],
  [1380013200000L, 123.359378559603], [1380016800000L, 125.963250678733],
  [1380020400000L, 125.074618194444], [1380024000000L, 124.656345088853],
  [1380027600000L, 122.411303435449], [1380031200000L, 124.145747100372],
  [1380034800000L, 124.359452274881], [1380038400000L, 122.815357211394],
  [1380042000000L, 123.057706915888]
]

[
  [1379955600000L, 536.4739135], [1379959200000L, 1235.42506637],
  [1379962800000L, 763.16329656], [1379966400000L, 804.04579319],
  [1379970000000L, 634.84689741], [1379973600000L, 753.52716718], 
  [1379977200000L, 506.90632968], [1379980800000L, 494.473732950001],
  [1379984400000L, 437.02095093], [1379988000000L, 176.25405034],
  [1379991600000L, 319.80432715], [1379995200000L, 206.87212398],
  [1379998800000L, 638.47226435], [1380002400000L, 438.18036666],
  [1380006000000L, 512.68490443], [1380009600000L, 904.603705539997],
  [1380013200000L, 491.408088450001], [1380016800000L, 670.275397960001],
  [1380020400000L, 767.166941339999], [1380024000000L, 899.976089609997], 
  [1380027600000L, 1243.64963909], [1380031200000L, 1508.82429811],
  [1380034800000L, 1190.18854705], [1380038400000L, 546.504592349999], 
  [1380042000000L, 206.84883264]
]

And ting[0] outputs this:

[1379955600000L, 123.187067936508]
[1379955600000L, 536.794013499999]

What i'm really trying to do is add up the values from ting[0-24] that comes AFTER the second comma. This made me try to do a split but that does not work

1
  • All your comments have made me realize just what part i was getting wrong: the data is allready listed and only outputs the commas and whatnot when printed. Thanks a lot for your help. Bonus question: how do i add up tola[1][u'values'][0][1]+tola[1][u'values'][1][1] in a smart way ? Commented Sep 24, 2013 at 18:05

2 Answers 2

4

You already have a list; the commas are put there by Python to delimit the values only when printing the list.

Just access element 2 directly:

print ting[2]

This prints:

[1379962800000, 125.539504822835]

Each of the entries in item['values'] (so ting) is a list of two float values, so you can address each of those with index 0 and 1:

>>> print ting[2][0]
1379962800000
>>> print ting[2][1]
125.539504822835

To get a list of all the second values, you could use a list comprehension:

second_vals = [t[1] for t in ting]
Sign up to request clarification or add additional context in comments.

9 Comments

Actually ting[2] outputs [1379962800000L, 125.539504822835] [1379962800000L, 763.16329656] and im trying to add the 763 value to the rest
@user2791993: I tested this with the URL from your sample code.
@user2791993: Ah, you are printing reference 2 from each sublist in tola, so tola[0]['values'][2] and tola[1]['values'][2], etc.
tourl = 'data.bitcoinity.org/chart_data' tovalues = {'timespan':'24h','resolution':'hour','currency':'USD','exchange':'all','mining_pool':'all','compare':'no','data_type':'price_volume','chart_type':'line_bar','smoothing':'linear','chart_types':'ccacdfcdaa'} todata = urllib.urlencode(tovalues) toreq = urllib2.Request(tourl, todata) tores = urllib2.urlopen(toreq) tores2 = tores.read() tos = json.loads(tores2) tola = tos["data"] for item in tola: ting = item.get("values") print(ting[2])
@user2791993: You need to be clear what values you need to pair up here.
|
1

When you load the data with json.loads, it is already parsed into a real list that you can slice and index as normal. If you want the data starting with the third element, just use ting[2:]. (If you just want the third element by itself, just use ting[2].)

1 Comment

I'm not trying to access just the ting[2] but a specific value in the ting[2] and that is were im failing. Ting[2] outputs [1379962800000L, 125.539504822835] [1379962800000L, 763.16329656]

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.