Seite 1 von 1

String in ein dictionary umwandeln

Verfasst: Mittwoch 2. Mai 2018, 14:56
von Robin@Cantelli
Hi,
ich ziehe Daten aus dem Netz welche im Grunde ein Dictionary sind. Ein key ist wiederum ein dictionary. Das Problem ist, dass dieses dictionary als sting übergeben wird:

Code: Alles auswählen

dict = {'somethin':'else','data':'{the other dict}',.......}
das möchte ich natürlich ändern in

Code: Alles auswählen

dict = {'somethin':'else','data':{the other dict},.......}
also in worten: '{the other dict}' soll nach {the other dict} übergehen.

Hat da jemand einen einfachen und effizienten Trick?

Danke im voraus

Robin

Re: String in ein dictionary umwandeln

Verfasst: Mittwoch 2. Mai 2018, 15:35
von pillmuncher

Re: String in ein dictionary umwandeln

Verfasst: Mittwoch 2. Mai 2018, 16:41
von Robin@Cantelli
danke für deine Antwort:)
Ich denke, dass json hier nicht hilft weile es direkt als dict gespeichert wird (ich will den key 'data' haben , da ich dort auf die listen aus 'bids' und 'asks' zugreifen möchte:

{'channel': 'order_book',
'data': '{"bids": [["9044.56", "4.00000000"], ["9037.49", "2.00000000"], ["9037.48", "4.90000000"], ["9037.25", "5.87000000"], ["9037.24", "2.44900000"], ["9034.27", "0.10874858"], ["9033.54", "2.00000000"], ["9033.45", "0.08639000"], ["9033.44", "4.00000000"], ["9030.38", "4.00000000"], ["9030.21", "0.10000000"], ["9030.01", "0.10000000"], ["9030.00", "2.00000000"], ["9026.42", "4.00000000"], ["9024.02", "1.00000000"], ["9024.01", "3.67460000"], ["9023.03", "5.70000000"], ["9022.00", "1.65760000"], ["9021.77", "0.10000000"], ["9021.42", "0.72300000"], ["9020.00", "2.86000000"], ["9019.99", "3.51840000"], ["9018.60", "1.00000000"], ["9017.05", "1.19900000"], ["9016.90", "1.65670000"], ["9016.24", "3.20000000"], ["9015.30", "0.01731000"], ["9015.29", "1.82500000"], ["9014.98", "0.23000000"], ["9014.41", "1.30400000"], ["9013.01", "5.60000000"], ["9011.49", "0.15000000"], ["9009.65", "3.80338400"], ["9007.83", "1.09453000"], ["9005.76", "4.50000000"], ["9005.70", "4.29000000"], ["9004.90", "13.53110000"], ["9002.16", "3.30000000"], ["9001.00", "0.25000000"], ["9000.00", "92.39263018"], ["8999.36", "19.00000000"], ["8999.09", "0.10000000"], ["8998.59", "3.65266700"], ["8997.78", "0.10000000"], ["8997.49", "0.10000000"], ["8997.06", "0.00804995"], ["8996.67", "0.10000000"], ["8996.20", "0.10000000"], ["8996.09", "0.00084013"], ["8995.44", "0.10000000"], ["8995.33", "0.10000000"], ["8995.24", "0.06699189"], ["8995.07", "3.83277500"], ["8995.01", "0.30000000"], ["8995.00", "1.20000000"], ["8994.62", "0.30000000"], ["8993.81", "1.75716520"], ["8993.80", "0.19602771"], ["8992.60", "0.10000000"], ["8992.33", "0.00075063"], ["8991.74", "0.00500445"], ["8991.54", "6.00000000"], ["8991.51", "0.10000000"], ["8991.47", "0.10000000"], ["8991.31", "0.10000000"], ["8990.78", "0.10000000"], ["8990.05", "0.10000000"], ["8990.02", "0.03100000"], ["8989.99", "0.10000000"], ["8989.92", "0.10000000"], ["8988.88", "3.87000000"], ["8988.56", "1.72800000"], ["8986.84", "0.10000000"], ["8986.55", "0.00207366"], ["8984.78", "0.20000000"], ["8984.34", "6.60640600"], ["8983.93", "12.55000000"], ["8982.68", "0.10000000"], ["8982.47", "0.10261000"], ["8981.06", "5.00000000"], ["8980.00", "0.00250000"], ["8979.41", "0.10000000"], ["8979.00", "0.10253200"], ["8977.48", "0.10087900"], ["8976.32", "8.53000000"], ["8975.70", "0.08208478"], ["8975.43", "1.06386212"], ["8974.62", "0.30000000"], ["8974.24", "1.05600000"], ["8973.76", "0.00501480"], ["8972.09", "10.94530000"], ["8971.62", "0.00074234"], ["8971.41", "0.00085012"], ["8970.21", "0.10000000"], ["8970.11", "0.10000000"], ["8970.00", "0.10000000"], ["8969.85", "0.18285000"], ["8969.50", "0.10000000"], ["8969.27", "0.00074253"], ["8968.09", "0.10060100"]], "asks": [["9051.91", "1.00000000"], ["9051.92", "0.10000000"], ["9051.93", "1.00000000"], ["9054.02", "1.00000000"], ["9060.50", "1.65630000"], ["9061.02", "0.16000000"], ["9066.33", "6.00000000"], ["9069.57", "0.11435700"], ["9069.60", "6.70000000"], ["9069.61", "2.00000000"], ["9069.79", "0.05482000"], ["9069.80", "4.38980000"], ["9069.99", "0.00071644"], ["9070.00", "2.00000000"], ["9070.05", "5.82000000"], ["9071.50", "2.60900000"], ["9072.97", "11.00000000"], ["9073.98", "7.57065600"], ["9073.99", "0.00969650"], ["9074.15", "0.11895600"], ["9074.29", "0.27210000"], ["9074.43", "5.33810000"], ["9074.97", "0.60000000"], ["9075.00", "0.01380000"], ["9076.56", "0.01600000"], ["9077.91", "3.04625800"], ["9077.95", "0.92100000"], ["9078.23", "0.26010000"], ["9078.42", "1.09453000"], ["9078.98", "0.10000000"], ["9078.99", "0.00368945"], ["9079.23", "1.44900000"], ["9079.42", "0.72300000"], ["9079.90", "17.93582300"], ["9080.00", "2.00000000"], ["9081.49", "6.00000000"], ["9081.84", "0.00499455"], ["9085.18", "5.11140800"], ["9087.48", "1.14400000"], ["9088.00", "5.98501577"], ["9088.14", "12.77180000"], ["9089.99", "2.36961907"], ["9090.15", "0.10000000"], ["9092.16", "3.50342106"], ["9095.56", "5.00000000"], ["9095.57", "5.77000000"], ["9096.79", "12.50000000"], ["9099.02", "4.66039100"], ["9100.00", "1.00000000"], ["9100.04", "0.00498465"], ["9100.86", "0.10000000"], ["9101.35", "0.43000000"], ["9101.49", "0.12043477"], ["9102.08", "0.15000000"], ["9102.45", "4.60000000"], ["9103.15", "0.02113308"], ["9105.20", "0.10000000"], ["9105.92", "3.80000000"], ["9109.74", "5.67000000"], ["9111.01", "0.20000000"], ["9111.32", "19.00000000"], ["9112.90", "4.70000000"], ["9114.72", "0.00066145"], ["9116.74", "5.00000000"], ["9116.75", "6.00000000"], ["9118.28", "0.00497475"], ["9119.53", "12.50000000"], ["9120.15", "6.00000000"], ["9123.19", "7.20900000"], ["9124.07", "8.31706629"], ["9124.09", "3.00000000"], ["9124.83", "0.12646451"], ["9125.00", "0.08611280"], ["9125.10", "0.03000000"], ["9126.59", "10.94530000"], ["9128.11", "0.10000000"], ["9131.47", "0.10000000"], ["9135.25", "0.13292405"], ["9136.22", "0.00159097"], ["9136.55", "0.00496485"], ["9140.97", "0.50000000"], ["9141.13", "0.10000000"], ["9142.33", "12.50000000"], ["9144.02", "0.00926290"], ["9144.62", "0.30000000"], ["9147.47", "0.13976978"], ["9148.67", "5.66800000"], ["9150.00", "8.26245189"], ["9153.99", "0.10000000"], ["9154.86", "0.00495495"], ["9155.36", "0.10000000"], ["9155.87", "0.10000000"], ["9155.90", "0.10000000"], ["9155.91", "0.10000000"], ["9156.04", "19.00000000"], ["9156.81", "0.10000000"], ["9157.61", "0.10000000"], ["9157.70", "0.10000000"], ["9158.11", "0.14674353"], ["9158.90", "0.10000000"]]}',
'event': 'data'}

Re: String in ein dictionary umwandeln

Verfasst: Mittwoch 2. Mai 2018, 16:46
von __deets__
Doch, das ist json. Einfach mit "json.loads(...)" in eine Python Datenstruktur wandeln, und zugreifen.

Re: String in ein dictionary umwandeln

Verfasst: Mittwoch 2. Mai 2018, 16:51
von pillmuncher
Doch, das geht schon mit JSON:

Code: Alles auswählen

import json
stuff = {
    'channel': 'order_book',
    'data': '{"bids": [["9044.56", "4.00000000"], ...}',
    'event': 'data'
}
stuff['data'] = json.loads(stuff['data'])

Re: String in ein dictionary umwandeln

Verfasst: Mittwoch 2. Mai 2018, 17:10
von Robin@Cantelli
Super!!! Vielen Dank!!!!


da ihr ja dort ganz fit zu sein scheint, wollte ich fragen ob ihr mir bei einem ähnlichen Problem helfen könnt. Seit gestern (bin neu im Bereich sockets) bekomme ich die Daten nicht mehr über http sondern websocket. Nach langem Suchen fand ich einen Klienten bei websocket der mir die Daten zieht. leider ist der Code dazu für mich eine Blackbox. Könnt ihr mir bei dem beiliegenden Code erklären wie ich die Daten so extrahieren kann (jetzt habe ich mir für das oben einfach nur mit copy and paste eine liste herausgenommen) dass ich json darauf anwenden kann wie oben ohne dass er die ganze zeit in meine console printet?

Liebe Grüße

Code: Alles auswählen

import pysher
import sys
import time


# Add a logging handler so we can see the raw communication data
import logging
root = logging.getLogger()
root.setLevel(logging.INFO)
ch = logging.StreamHandler(sys.stdout)
root.addHandler(ch)

pusher = pysher.Pusher('de504dc5763aeef9ff52')

def  my_func(*args, **kwargs):


    print("processing Args:", args)
    print("processing Kwargs:", kwargs)

# We can't subscribe until we've connected, so we use a callback handler
# to subscribe when able
def connect_handler(data):
    channel = pusher.subscribe('order_book')
    channel.bind('data', my_func)

pusher.connection.bind('pusher:connection_established', connect_handler)
pusher.connect()

while True:

	
	# Do other things in the meantime here...
	time.sleep(1)

Re: String in ein dictionary umwandeln

Verfasst: Donnerstag 3. Mai 2018, 22:25
von Robin@Cantelli
Hey Leute, ich bekomme meine Daten jetzt doch ein wenig anders. Wie ich die Hierarchie der Listen und Tupel durchgehe verstehe ich aber ich habe immer noch das Problem, dass das dict an das ich eig will ein string ist. Könnt ihr mir helfen?

Code: Alles auswählen

[[('{"bids": [["9653.84", "2.09932916"], ["9652.00", "10.00000000"], ["9651.00", "0.89615334"], ["9650.23", "0.01298339"], ["9645.36", "1.00000000"], ["9645.02", "0.40255000"], ["9645.00", "15.00000000"], ["9641.98", "4.71910000"], ["9640.64", "0.05594000"], ["9640.63", "7.26793600"], ["9638.70", "0.30000000"], ["9635.00", "0.15000000"], ["9634.31", "8.40900000"], ["9634.30", "17.81135900"], ["9633.76", "5.00000000"], ["9624.04", "0.01000000"], ["9622.62", "0.71800000"], ["9622.46", "0.01600000"], ["9621.01", "0.01121000"], ["9621.00", "0.00100000"], ["9617.88", "13.89760000"], ["9617.10", "2.29800000"], ["9613.48", "4.04262131"], ["9613.47", "13.00000000"], ["9613.29", "0.46130000"], ["9610.38", "1.47500000"], ["9609.96", "0.40880000"], ["9607.51", "1.37900000"], ["9605.00", "0.01000000"], ["9603.18", "0.02010000"], ["9602.96", "1.72800000"], ["9602.10", "0.15000000"], ["9601.12", "0.02900000"], ["9600.96", "1.09453000"], ["9600.20", "0.07000000"], ["9600.00", "14.52040088"], ["9599.34", "1.34800000"], ["9597.19", "0.00074396"], ["9595.70", "0.00074408"], ["9595.35", "0.00074411"], ["9594.86", "1.05600000"], ["9594.49", "0.20000000"], ["9594.29", "0.00074419"], ["9593.73", "0.00074423"], ["9591.01", "0.00074444"], ["9590.27", "0.00074450"], ["9590.00", "102.17188587"], ["9589.64", "0.30000000"], ["9589.39", "0.00074457"], ["9589.00", "5.00000000"], ["9586.64", "0.00469395"], ["9586.50", "12.55000000"], ["9585.59", "0.00074486"], ["9584.31", "0.00074496"], ["9583.46", "0.00085091"], ["9582.02", "0.00074514"], ["9580.61", "0.00207174"], ["9580.20", "0.00074528"], ["9580.00", "0.30915996"], ["9579.76", "0.08176100"], ["9578.35", "0.00074543"], ["9578.29", "0.00074543"], ["9577.04", "0.00074553"], ["9575.74", "0.00074563"], ["9575.35", "0.00074566"], ["9575.16", "0.00074567"], ["9574.49", "0.20000000"], ["9574.06", "0.00074576"], ["9573.45", "0.00074581"], ["9573.12", "0.00074583"], ["9572.96", "0.00074585"], ["9572.47", "0.00074588"], ["9572.43", "7.29600000"], ["9572.15", "0.00074591"], ["9570.78", "0.00074602"], ["9570.71", "0.00074602"], ["9569.67", "10.94530000"], ["9569.60", "0.00074611"], ["9567.74", "0.00074625"], ["9567.47", "0.00470340"], ["9567.00", "0.01000000"], ["9565.70", "0.02658562"], ["9564.92", "0.00074752"], ["9564.00", "1.91356867"], ["9563.81", "0.00074656"], ["9563.72", "0.00074657"], ["9563.59", "0.00079036"], ["9562.62", "0.00074665"], ["9562.60", "12.55000000"], ["9562.43", "0.00074667"], ["9560.25", "0.00074684"], ["9560.01", "0.11100000"], ["9560.00", "100.10000000"], ["9558.76", "0.00074695"], ["9557.79", "0.00074703"], ["9556.99", "0.00074709"], ["9556.53", "0.00074713"], ["9555.22", "0.00074723"], ["9555.00", "0.05000000"], ["9554.61", "0.02811331"]], "asks": [["9664.79", "0.03500000"], ["9669.79", "0.22000000"], ["9669.85", "0.25000000"], ["9670.50", "1.00000000"], ["9670.70", "0.30000000"], ["9671.29", "0.40255000"], ["9671.31", "8.40900000"], ["9671.32", "13.00000000"], ["9673.58", "1.70800000"], ["9674.11", "1.09453000"], ["9674.72", "0.00235812"], ["9674.77", "4.98650000"], ["9675.00", "3.55970832"], ["9675.30", "0.10000000"], ["9675.34", "4.59000000"], ["9675.41", "0.10000000"], ["9676.17", "0.00074274"], ["9676.62", "0.00074356"], ["9678.58", "3.55000000"], ["9679.10", "0.20000000"], ["9679.15", "0.04858665"], ["9679.16", "0.10000000"], ["9679.17", "0.09781752"], ["9679.61", "0.01621000"], ["9679.62", "0.10000000"], ["9679.72", "0.00074222"], ["9681.57", "0.10000000"], ["9681.59", "4.56595500"], ["9682.51", "0.00074392"], ["9682.60", "0.10000000"], ["9682.70", "0.00468450"], ["9682.77", "0.10000000"], ["9683.09", "0.10000000"], ["9684.40", "0.10000000"], ["9684.67", "0.00791000"], ["9685.00", "0.10000000"], ["9685.24", "0.00067084"], ["9685.52", "0.00074299"], ["9685.55", "2.90000000"], ["9686.05", "0.10000000"], ["9686.21", "0.00074369"], ["9687.90", "0.15000000"], ["9688.52", "0.10000000"], ["9688.87", "4.00000000"], ["9688.98", "0.10000000"], ["9689.01", "0.10000000"], ["9689.50", "0.00838826"], ["9689.57", "0.10000000"], ["9690.01", "0.20000000"], ["9690.20", "0.10000000"], ["9691.81", "11.13600000"], ["9691.82", "0.86700000"], ["9692.18", "0.02800000"], ["9692.27", "5.58052400"], ["9692.43", "0.00947625"], ["9693.23", "0.10000000"], ["9695.00", "2.44770000"], ["9695.95", "3.95000000"], ["9696.05", "1.23700000"], ["9698.06", "0.00207776"], ["9698.96", "13.95500000"], ["9699.02", "0.00062480"], ["9699.14", "0.00324000"], ["9699.15", "5.67930000"], ["9699.47", "0.54140000"], ["9699.99", "0.00066985"], ["9700.00", "5.02885650"], ["9701.00", "0.20000000"], ["9702.11", "0.00467505"], ["9702.60", "3.18000000"], ["9702.99", "0.00762511"], ["9703.00", "0.40000000"], ["9703.92", "2.44700000"], ["9703.99", "0.00170023"], ["9704.84", "0.10000000"], ["9705.09", "0.10000000"], ["9705.41", "5.31000000"], ["9706.94", "12.50000000"], ["9707.08", "0.90400000"], ["9707.12", "0.07410265"], ["9707.99", "0.00175080"], ["9708.13", "0.10000000"], ["9708.69", "0.10000000"], ["9709.00", "0.06155500"], ["9709.29", "0.07344797"], ["9709.66", "3.00000000"], ["9710.00", "0.09033975"], ["9711.25", "0.20000000"], ["9711.55", "0.00073800"], ["9712.33", "2.48000000"], ["9712.34", "0.02500000"], ["9712.36", "0.64877446"], ["9713.79", "0.00090325"], ["9714.87", "0.10000000"], ["9715.36", "0.10000000"], ["9715.54", "0.00207394"], ["9716.13", "4.88137400"], ["9718.92", "0.10000000"], ["9719.64", "5.63588966"], ["9719.75", "0.10000000"]]}',),
  {}]]

Re: String in ein dictionary umwandeln

Verfasst: Donnerstag 3. Mai 2018, 22:36
von Sirius3
@Robin@Cantelli: die Lösung ist immer noch die selbe. Aber warum sind die Daten in diesem seltsamen Format? Wie kommst Du da dran?