Python (3): Leerzeichen in einem String ersetzen

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
xvzf
User
Beiträge: 13
Registriert: Montag 29. Oktober 2012, 14:14

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:

Code: Alles auswählen

chromium http://www.google.de/search?q=test%20mit%20leerzeichen
Das möchte ich mit python umsetzen.
mit

Code: Alles auswählen

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!!
JonasR
User
Beiträge: 251
Registriert: Mittwoch 12. Mai 2010, 13:59

Hey und willkommen im Forum ;)

Schau dir mal urllib an, ich denke das ist genau was du suchst.
http://docs.python.org/3/library/urllib ... arse.quote

Übrigens öffne externe Programme lieber mit subprocess.popen als mit dem os modul.
http://docs.python.org/3/library/subpro ... cess.Popen
gardiac2002
User
Beiträge: 5
Registriert: Samstag 7. Juli 2012, 10:36
Wohnort: Wien

Schau dir mal die Stringfunktionen an: http://www.tutorialspoint.com/python/python_strings.htm

Code: Alles auswählen

'das ist dein String'.replace('muster', 'ersatz_zeichen')
Die Übergabe an Chrome würde ich per Terminal lösen, siehe: http://docs.python.org/2/library/subprocess.html zum Beispiel:

Code: Alles auswählen

subprocess.call(['chromium-browser', '--weitere-Optionen'])
xvzf
User
Beiträge: 13
Registriert: Montag 29. Oktober 2012, 14:14

Super, Danke Leute!!
Ich was ist der Unterschied zwischen os und subprocess??
LG Matthias
xvzf
User
Beiträge: 13
Registriert: Montag 29. Oktober 2012, 14:14

Hab jetzt einen anderen Teil meines Programms umzuschreiben und bekomme folgende Fehlermeldung:

Code: Alles auswählen

def aufnehmen(zeit):
  flags = zeit + ' ' + 'eingabe'
  # Aufnehmen in Datei eingabe.flac
  subprocess.popen(['./record', flags])
  return 0
Traceback (most recent call last):
File "javis", line 33, in <module>
aufnehmen()
TypeError: aufnehmen() missing 1 required positional argument: 'zeit'
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Das eine ist ein Apfel, das andere eine Birne.

Spass bei seite: Schau dir die Dokumentation an. `os` bietet in Hinblick auf externe Programme das mindeste und `subprocess` ist - wie der Name schon sagt - darauf spezialisiert und bietet ein komfortableres (und maechtigeres) Interface.

Was dein neues Problem angeht: Funktionen, die ein Argument erwarten, muss man eben auch mit einem aufrufen.

Und ich glaube du willst eigentlich (neben `Popen` statt `popen`)

Code: Alles auswählen

subprocess.Popen(['./record', zeit, 'eingabe'])
verwenden. `Popen` will eine Liste von Argumenten, der Aufruf sieht _nicht_ wie in einer Shell aus.
Zuletzt geändert von cofi am Montag 29. Oktober 2012, 14:56, insgesamt 1-mal geändert.
xvzf
User
Beiträge: 13
Registriert: Montag 29. Oktober 2012, 14:14

Eine Idee wegen der Fehlermeldung?
gardiac2002
User
Beiträge: 5
Registriert: Samstag 7. Juli 2012, 10:36
Wohnort: Wien

Schau dir die Fehlermeldung an. Da ist das Problem meistens sehr genau beschrieben.
-> aufnehmen() missing 1 required positional argument: 'zeit'

Deiner Funktion fehlt ein Parameter.
xvzf
User
Beiträge: 13
Registriert: Montag 29. Oktober 2012, 14:14

argh, okay, hab was übersehen, sry Leute..
xvzf
User
Beiträge: 13
Registriert: Montag 29. Oktober 2012, 14:14

Hab noch eine Frage (bevor ich jetzt google, ihr seit besser ;) ):
Kann ich einen Teil des Strings "erkennen" und den Rest der dahinter steht in einen neuen String kopieren?
Also z.B.
"Suche nach ..." in "..."
??

Danke!
BlackJack

@xvzf: Lies doch bitte die Dokumentation von Python. Welche Operationen und Methoden mit Zeichenketten möglich sind.
xvzf
User
Beiträge: 13
Registriert: Montag 29. Oktober 2012, 14:14

Okay Okay ;)
Dann fang ich mal an, ich programmier eigentlich in C, will aber versch. Programme miteinander verbinden
Antworten