Po użyciu cgi.parse_qs()
, jak przekonwertować wynik (słownik) z powrotem na ciąg zapytania? Szukam czegoś podobnego do urllib.urlencode()
.Jak przekonwertować słownik na ciąg zapytania w języku Python?
Odpowiedz
Z the docs:
urllib.urlencode
(query
[,doseq
])
Konwersja obiekt mapowania lub sekwencja krotki dwuelementowych do „procent” zakodowany ciąg ... seria odkey=value
parami oddzielonych'&'
postaci ...
A dict
jest odwzorowaniem.
To prawda, ale 'dict' zwrócony przez' cgi.parse_qs() 'faktycznie ma' list's jako swoje "wartości". Przejście od razu spowoduje bardzo dziwnie wyglądające ciągi zapytań. – Johnsyweb
Jak mówią doktorzy, właśnie do tego służy 'doseq'. –
To prawda. To nauczy mnie czytać więcej niż pierwsze zdanie! – Johnsyweb
Może szukasz czegoś takiego:
def dictToQuery(d):
query = ''
for key in d.keys():
query += str(key) + '=' + str(d[key]) + "&"
return query
Zajmuje słownika i przekształcić go w ciągu zapytania, podobnie jak urlencode. Dopisze to ciąg "&" do ciągu zapytania, ale return query[:-1]
naprawi to, jeśli jest to problem.
Czy spotkałeś jeszcze 'str.join()'? Co powiesz na 'urllib.quote_plus()'? –
@garbados Twoje rozwiązanie powinno działać w prostych przypadkach. Jednak spójrz na 'urlencode' w' urllib.py' (powinno to być w twojej instalacji Pythona), aby zobaczyć, dlaczego tworzenie ciągu zapytania nie jest tak proste, jak sugeruje twoja odpowiedź (w szczególności potrzeba "cytowania" pewnych znaków, które nie są poprawne w adresie URL). @Ignacio wspomniał również o dwóch funkcjach, które wyczyściłyby twoją implementację i poprawią ją. –
Ach, w rzeczy samej. Przepraszam za wykonanie cruddy. Chodzi o to, że powinienem być bardziej ostrożny i odpowiadać na pytania, z którymi nigdy się nie spotkałem. – garbados
Poszukujesz czegoś dokładnie jak urllib.urlencode()
!
Jednak kiedy zadzwonić parse_qs()
(odrębny od parse_qsl()
), słownik klucze są nazwy zmiennych wyjątkowy zapytań i wartości są wykazy wartości dla każdej nazwy.
Aby przekazać tę informację do urllib.urlencode()
, należy "spłaszczyć" te listy. Oto w jaki sposób można to zrobić z listą comprehenshion krotek:
query_pairs = [(k,v) for k,vlist in d.iteritems() for v in vlist]
urllib.urlencode(query_pairs)
W python3, nieco inny:
from urllib.parse import urlencode
urlencode({'pram1': 'foo', 'param2': 'bar'})
wyjściowa: 'pram1=foo¶m2=bar'
dla python2 i kompatybilności python3, spróbuj tego:
try:
#python2
from urllib import urlencode
except ImportError:
#python3
from urllib.parse import urlencode
- 1. Konwertuj ciąg na Enum w języku Python
- 2. python: słownik na ciąg, niestandardowy format? tylko
- 3. python, jak przekonwertować obiekt string.template na ciąg
- 4. Jak przekonwertować JSON na ciąg zapytania w angular2?
- 5. Jak przekonwertować słownik do tablicy
- 6. Słownik w języku Python uzyskuje wiele wartości
- 7. Jak przekonwertować ciąg na bajt w języku C#?
- 8. Jak przekonwertować obiekt InputStream na ciąg w języku Java?
- 9. przekonwertować ciąg bajtów na int (python)
- 10. Python OpenCV przekonwertować obraz na ciąg bajtów?
- 11. Jak przekonwertować BeautifulSoup.ResultSet na ciąg
- 12. Jak przekonwertować `ctime` na` datetime` w języku Python?
- 13. Jak przekonwertować niestandardowy obiekt klasy na krotkę w języku Python?
- 14. Słownik w języku Python: TypeError: unhashable type: 'list'
- 15. Jak przekonwertować ciąg znaków na prawidłową nazwę zmiennej w python?
- 16. jak przekonwertować datę ciąg na format datetime w python?
- 17. Jak przekonwertować kod Unicode na ciąg znaków na poziomie Python?
- 18. SqlDataReader - Jak przekonwertować bieżący wiersz na słownik
- 19. Jak przekonwertować słownik na pandową ramkę danych
- 20. Konwertuj ciąg na liczbę całkowitą z dziesiętnym w języku Python
- 21. Konwertuj tablicę liczb całkowitych na ciąg w języku Python
- 22. Jak przekonwertować ciąg znaków na utf-8 w Pythonie
- 23. Jak przekonwertować zmienną ciągów znaków w języku Python 3 na zwykły ciąg znaków?
- 24. Jak przekonwertować ciąg zapytania adresu URL na listę krotek za pomocą języka Python?
- 25. Konwertuj ciąg adresu IP na binarny w języku Python
- 26. Konwertuj ciąg znaków na JSON w języku Python?
- 27. Jak przekonwertować ciąg znaków szesnastkowy na ciąg bajtów w Perlu?
- 28. Python dziesiętny na ciąg
- 29. Jak analizować ciąg znaków daty HTTP w języku Python?
- 30. jak przekonwertować ciąg c na ciąg d?
UWAGA: ['cgi.parse_qs()' jest przestarzałe. Zamiast tego użyj funkcji urlparse.parse_qs().] (Http://docs.python.org/library/cgi.html#cgi.parse_qs) – Johnsyweb
** Zobacz też: ** https://stackoverflow.com/questions/5607551/ how-to-urlencode-a-querystring-in-python – dreftymac