Forum: PC-Programmierung Python (3): Leerzeichen in einem String ersetzen und String an externe Funktion weiter geben


von Matthias R. (mons)


Lesenswert?

Hallo,
Ich hab jetzt mal angefangen mich mit Python3 zu beschäftigen, um doch 
noch eine Scriptsprache zu lernen ;)
Jetzt möchte ich ein Programm schreiben, dass im Internet (Google) nach 
einem Begriff sucht:

Wenn ich Chrome im Terminal aufrufe um einen link zu öffnen muss ich das 
so machen:
1
chromium www.google.de/search?q=test%20mit%20leerzeichen
Das möchte ich mit python umsetzen.
mit
1
import os
 kann man ja ein framework implentieren, das die Schnittstelle zum 
Betriebssystem darstellt.
Jetzt meine eigentliche Frage:
Wie kann ich einen string "dies ist ein test" in 
"dies%20ist%20ein%20test" umwandeln, um es an chromium zu übergeben?

Danke Schonmal!!

von Karl (Gast)


Lesenswert?

Wie wär's mit ner For-Schleife über die Länge (len()) des Strings? Wenn 
nicht solltest du mal nach Reguläre Ausdrücke googeln

von Matthias R. (mons)


Lesenswert?

Hi,
Danke!
Das mit len() versteh ich nicht so ganz..
Hast du evtl. einen Beispielcode oder schematischen Aufbau dafür? Ich 
wills wirklich verstehen, nicht kopieren, deshalb frag ich

von Tom K. (ez81)


Lesenswert?

Das möchte man nicht manuell machen (dann kann man ja gleich C nehmen):
http://docs.python.org/2/library/urllib.html#urllib.quote
Das Äquivalent bei Python 3 sollte zu finden sein.

von Marcus W (Gast)


Lesenswert?

So??

str = 'dies ist ein test'
print str.replace(' ', '%20')

von Yalu X. (yalu) (Moderator)


Lesenswert?

Tom K. schrieb:
> Das möchte man nicht manuell machen (dann kann man ja gleich C nehmen):
> http://docs.python.org/2/library/urllib.html#urllib.quote
> Das Äquivalent bei Python 3 sollte zu finden sein.

In Python 3 heißt die entsprechende Funktion

  urllib.parse.quote

also bspw.
1
from urllib.parse import quote
2
3
a = quote('Text mit Leerzeichen (und Klammern)')
4
print(a)

Um von Python aus eine Webseite zu laden, muss man übrigens nicht
unbedingt einen externen Browser bemühen:
1
from urllib.request import urlopen
2
3
f = urlopen('http://...')
4
data = f.read()
5
print(data)

von Matthias R. (mons)


Lesenswert?

Danke, habs jetzt (manuell) hinbekommen

von Daniel -. (root)


Lesenswert?

Matthias R. schrieb:
> Danke, habs jetzt (manuell) hinbekommen

"manuell" sollte man in Skriptsprachen möglichst nichts implementieren
explizite Schleifen aller Art sollte man auch meiden
Funktionen wie map, filter "enthalten" effizientere Schleifen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.