Cum să imprimați un dicționar linie cu linie în Python? (Programare, Ruby Pe Șine, Ruby 1.9)

Jett a intrebat.

Acesta este dicționarul

text = "”“"
Folosind acest 

#<SyntaxError: /Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: invalid multibyte char (US-ASCII)
/Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: invalid multibyte char (US-ASCII)
/Users/tammam56/rubydev/favquote/lib/daemons/twitter_quotes_fetch.rb:54: syntax error, unexpected $end, expecting keyword_end

Se imprimă următoarele:

Dar vreau ca programul să îl tipărească astfel:

Comentarii

  • > Por .Abia am început să învăț dicționarele, așa că nu sunt sigur cum să fac asta.
6 răspunsuri
namit
#!/bin/env ruby
# encoding: utf-8
ieșire:

Comentarii

  • Știu că este vechi, dar m-am gândit că ar merita să menționez că acest lucru nu funcționează dacă mașinile[x] sunt numere întregi. Nu este ceea ce a cerut OP, așa că o spun doar pentru oricine care se împiedică de acest lucru presupunând că este o soluție de pătură. –  > Por Darrel Holt.
  • @DarrelHolt știi cum să faci să funcționeze cu numere întregi? Pentru că asta e problema cu care mă confrunt în prezent – theprowler > Por [email protected] Cel mai aproape de recrearea problemei este dacă
  • then #!/bin/env ruby este un număr întreg mapat pe cheia # encoding mai degrabă decât un set asociat cu cheia > Por .. În acest caz, nu este nevoie să utilizați
  • pentru că este vorba de o singură valoare pe care o recuperați, cu excepția cazului în care folosiți ceva de genul unei liste sau a unui set de numere întregi, atunci ar trebui să funcționeze. Îmi pare rău, au trecut câteva luni, așa că nu-mi amintesc complet cum am ajuns la concluzia din comentariul meu anterior. Ai putea să-mi trimiți codul tău și să văd dacă te pot ajuta cu ceva. – # encoding: utf-8Darrel Holt > Por .Hmm. Cred că problema mea este chiar mai gravă de atât. Practic, am analizat niște date dintr-un tabel HTML și s-a întâmplat să le stochez într-un dicționar, iar acum încerc să iau aceste date din dicționar și să le pun într-un DataFrame înainte de a le exporta într-un tabel Oracle….este destul de amănunțit, știu, dar pasul care mă reține acum este introducerea datelor într-un DataFrame…. dicționarul meu, din anumite motive, are o singură cheie și toate datele sunt în valori, așa că este dificil să le pun în rânduri și coloane… – 
  • theprowler

  • > Por kchak.

Ați putea utiliza

pentru acest lucru.

din acest modul convertește un obiect JSON într-un șir de caractere formatat corespunzător, pe care îl puteți apoi imprima.magic_encodingRezultatul arată astfel

sudo gem install magic_encoding

magic_encodingdocumentație specifică, de asemenea, o mulțime de opțiuni utile pentru această metodă.

Comentarii

  • adevărat, conținutul dict-ului trebuie să fie serializabil în json, cu toate acestea, ieșirea furnizată aici este mult mai curată (de exemplu, lizibilă pentru oameni) decât ieșirea produsă de pprint.PrettyPrinter. în special în domeniul indentării consecvente și al eliminării prefixelor de șiruri de caractere, cum ar fi u’foo’. –  > Por Buffalo Rabor.
  • I do > Por . pentru că, altfel, caracterele non-ASCII sunt ilizibile. – 
  • Boris

  • > Por .
  • MrWonderful

  • magic_encodingO soluție mai generalizată care să gestioneze dicte și liste imbricate arbitrar și adânc ar fi: > Por .

Aceasta produce rezultatul:

Am întâlnit o nevoie similară și am dezvoltat o funcție mai robustă ca un exercițiu pentru mine. O includ aici în cazul în care poate fi de folos altcuiva. În timpul rulării nosetest, am constatat că este util să pot specifica fluxul de ieșire în apel, astfel încât sys.stderr să poată fi utilizat în locul acestuia.

Utilizând această funcție, ieșirea OP arată astfel:

# encoding: UTF-8pe care eu personal am considerat-o mai utilă și mai descriptivă.

Având în vedere exemplul puțin mai puțin trivial de:

# encoding: UTF-8
class UserController < ApplicationController

Soluția solicitată de OP produce următorul rezultat:

în timp ce varianta „îmbunătățită” produce următoarea soluție:

Sper ca acest lucru să fie util pentru următoarea persoană care caută acest tip de funcționalitate.

$ export LC_ALL=en_US.UTF-8
$ export LANG=en_US.UTF-8

Iar dacă formatul nu este prea strict, se poate folosi și „print json.dumps(obj, indent=3)”. Aceasta oferă o reprezentare rezonabilă a majorității structurilor, deși se blochează (în mediul meu) în cazul exemplului meu mai puțin trivial din cauza utilizării unui tuplu ca cheie… – 

MrWonderful

De ce nu folosiți doar

Comentarii

  • aici? – Martijn Pieters > Por .
  • aproape a făcut un creator JSON, nu? – 

  • user2007447 > Por .

mac13k

# encoding: utf-8

este un instrument bun pentru această sarcină: