String in ein dictionary umwandeln

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Robin@Cantelli
User
Beiträge: 9
Registriert: Sonntag 4. März 2018, 10:33

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
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

In specifications, Murphy's Law supersedes Ohm's.
Robin@Cantelli
User
Beiträge: 9
Registriert: Sonntag 4. März 2018, 10:33

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'}
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Doch, das ist json. Einfach mit "json.loads(...)" in eine Python Datenstruktur wandeln, und zugreifen.
Benutzeravatar
pillmuncher
User
Beiträge: 1484
Registriert: Samstag 21. März 2009, 22:59
Wohnort: Pfaffenwinkel

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'])
In specifications, Murphy's Law supersedes Ohm's.
Robin@Cantelli
User
Beiträge: 9
Registriert: Sonntag 4. März 2018, 10:33

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)
Robin@Cantelli
User
Beiträge: 9
Registriert: Sonntag 4. März 2018, 10:33

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"]]}',),
  {}]]
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@Robin@Cantelli: die Lösung ist immer noch die selbe. Aber warum sind die Daten in diesem seltsamen Format? Wie kommst Du da dran?
Antworten