Hy,
ich hab ein kleines Noobyproblem. Würde es gerne selbst durch Dokus lösen, aber ich weiß nicht nach was ich suchen soll. Würde mich über Code Snippets o.ä. freuen
:
Ich habe einen String:
Harald (Jürgen) Maier
So jetzt will ich die klammern weg haben und durch leerzeichen ersetzen.
Gruß BoOnOdY
Zeichen aus Stringvariablen löschen
Es gibt sicherlich elegantere Lösungen. Aber das hier sollte es tun:
Code: Alles auswählen
from re import *
text = 'Harald (Juergen) Maier'
p1 = compile('\(')
p2 = compile('\)')
newtext = p2.sub(' ', p1.sub(' ', text))
Mit regulären Ausdrücken wäre es sicher eleganter es mit *einem* Ausdruck zu lösen.
Ansonsten gibt's natürlich noch die `replace()`-Methode auf Zeichenketten.
Ansonsten gibt's natürlich noch die `replace()`-Methode auf Zeichenketten.
Code: Alles auswählen
In [22]: import re
In [23]: text = 'Harald (Juergen) Maier'
In [24]: regex = re.compile('[()]')
In [25]: regex.sub(' ', text)
Out[25]: 'Harald Juergen Maier'
In [26]: text.replace('(', ' ').replace(')', ' ')
Out[26]: 'Harald Juergen Maier'
Noch eine Möglichkeit!
Code: Alles auswählen
def removeBrackets(s):
temp = ""
for i in foo:
if i == "(" or i == ")":
temp = "".join([temp," "])
else:
temp = "".join([temp,i])
return temp
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dann mach ich mir auch mal dran:BlackVivi hat geschrieben:Noch eine Möglichkeit
Code: Alles auswählen
in [8]: import string
In [9]: 'Harald (Juergen) Maier'.translate(string.maketrans('()', ' '))
Out[9]: 'Harald Juergen Maier'
Code: Alles auswählen
In [16]: ''.join(c for c in 'Harald (Jürgen) Maier' if c not in ('(', ')'))
Out[16]: 'Harald J\xc3\xbcrgen Maier'
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
@Leonidas
BoOnOdY möchte ja "unnötige" Leerzeichen erzeugen, er hat ja zwischen den ersten Namen und dem ( ein Leerzeichen und möchte dann das ( mit einem Leerzeichen ersetzen... dadurch entstehen 2. (Unlogisch, aber Aufgabenstellung ist Aufgabenstellung)
Die untere Lösung löscht ja die Brackets einfach. Beziehungsweise... setzt aus dem bestehenden String einen neuen zusammen und ignoriert dabei die Klammern.
Vielleicht versteh ich das auch falsch...
BoOnOdY möchte ja "unnötige" Leerzeichen erzeugen, er hat ja zwischen den ersten Namen und dem ( ein Leerzeichen und möchte dann das ( mit einem Leerzeichen ersetzen... dadurch entstehen 2. (Unlogisch, aber Aufgabenstellung ist Aufgabenstellung)
Die untere Lösung löscht ja die Brackets einfach. Beziehungsweise... setzt aus dem bestehenden String einen neuen zusammen und ignoriert dabei die Klammern.
Vielleicht versteh ich das auch falsch...
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Oh, tut mir leid, hab die Aufgabenstellung nicht fertiggelesen (bzw. mir selbst gedacht, was was der OP haben wollte).BlackVivi hat geschrieben:BoOnOdY möchte ja "unnötige" Leerzeichen erzeugen, er hat ja zwischen den ersten Namen und dem ( ein Leerzeichen und möchte dann das ( mit einem Leerzeichen ersetzen... dadurch entstehen 2. (Unlogisch, aber Aufgabenstellung ist Aufgabenstellung)
Der Code der jetzt folgt nutzt den ternären Operator von Python 2.5 und wird so nicht in früheren Python-Versionen laufen. Be sure to use an up-to-date Version of Python.
Aber ich habe noch eine Lösung, die Klammern durch Spaces ersetzt:
Code: Alles auswählen
In [5]: ''.join(map(lambda char: ' ' if char in ('(', ')') else char, 'Hans (Juergen) Maier'))
Out[5]: 'Hans Juergen Maier'
Code: Alles auswählen
In [9]: ''.join(char if char not in ('(', ')') else ' ' for char in 'Hans (Juergen) Maier')
Out[9]: 'Hans Juergen Maier'
Code: Alles auswählen
In [15]: ''.join(char if ord(char) not in range(40, 42) else ' ' for char in 'Hans (Juergen) Maier')
Out[15]: 'Hans Juergen Maier'
Code: Alles auswählen
In [17]: ''.join(char if ord(char) not in range(ord('('), ord(')') + 1) else ' ' for char in 'Hans (Juergen) Maier')
Out[17]: 'Hans Juergen Maier'
Code: Alles auswählen
In [19]: ''.join(char if ord(char) not in [ord('('), ord(')')] else ' ' for char in 'Hans (Juergen) Maier')
Out[19]: 'Hans Juergen Maier'
SCNR
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hmm .. nette Stringmanipulation ..
Meine frage ist ähnlich:
Wie kann ich leerzeichen am ende von einem String entfernen?
z.B. aus "Ich, der Held " zu "Ich, der Held"
EDIT: Hat sich erledigt. ein string.rstrip() ist die lösung ^^
Meine frage ist ähnlich:
Wie kann ich leerzeichen am ende von einem String entfernen?
z.B. aus "Ich, der Held " zu "Ich, der Held"
EDIT: Hat sich erledigt. ein string.rstrip() ist die lösung ^^
xmpp:kromonos@user-helfen-usern.de
HomePage/IT-Forum: http://www.user-helfen-usern.de
HomePage/IT-Forum: http://www.user-helfen-usern.de