2016-07-07 18 views
-1

Ich möchte [' von Anfang und '] Zeichen vom Ende einer Zeichenfolge entfernen.Python: Wie entfernt man ['und']?

Das ist mein Text:

"['45453656565']" 

Ich brauche diesen Text haben:

"45453656565" 

Ich habe versucht str.replace

text = text.replace("['",""); 

zu verwenden, aber es funktioniert nicht.

+3

Was meinst du mit "_does not work_"? Was tut es? – rodrigo

+0

gerade die Frage bearbeitet, um genauer zu sein, dass Anfang und Ende sind die Positionen der Zeichen entfernt werden ;-) – Dilettant

+1

Beachten Sie, dass 'text.replace (" ['"," ")' nur Vorkommen der Zeichenfolge 'ersetzt ['' mit der leeren Zeichenfolge, also sollten Sie "45453656565 ']" als Ergebnis erhalten. Doing 'text.replace (" ['"," ") .replace ("'] "," ") sollte zurückgeben, was Sie wollen, obwohl es bessere Lösungen gibt. – Bakuriu

Antwort

7

Sie benötigen Text zu entfernen, indem Sie die unerwünschten Zeichen zu str.strip() Methode übergeben:

>>> s = "['45453656565']" 
>>> 
>>> s.strip("[']") 
'45453656565' 

Oder wenn Sie wollen, dass es konvertieren integer Sie einfach das gestreifte Ergebnis int Funktion übergeben können:

>>> try: 
...  val = int(s.strip("[']")) 
... except ValueError: 
...  print("Invalid string") 
... 
>>> val 
45453656565 
+0

Hallo, dein Code funktioniert wie ein Zauber. Entschuldigung, ich kann diese Antwort nicht akzeptieren, weil sie zeigte "Du kannst die Antwort in 5 Minuten annehmen" – Nguyen

+2

@Nguyen ** Es gibt keine Eile, Antworten zu akzeptieren. ** Tatsächlich solltest du wirklich mindestens ein paar Stunden oder einen Tag warten .Eine frühzeitige Antwort bedeutet, dass weniger Menschen Ihre Frage lesen oder versuchen, sie zu beantworten, was wiederum bedeutet, dass Sie eine geringere Chance haben, eine gute Antwort zu erhalten. Meistens sind die ersten Antworten nicht die besseren. – Bakuriu

+0

@Nguyen Ich stimme Bakuriu zu :-) Es ist besser, mindestens einige Stunden zu warten, obwohl dies eine einfache Frage ist, aber Sie können diesen Tipp immer verwenden, speziell für wichtigere/komplizierte Fragen. – Kasramvd

0

Sie könnten das Zeichen, wenn das Element Filterung Schleife über eine Ziffer:

>>> number_array = "['34325235235']" 
>>> int(''.join(c for c in number_array if c.isdigit())) 
34325235235 

Diese Lösung funktioniert auch für beide "['34325235235']" und '["34325235235"]' und was auch immer andere Kombination von Anzahl und Zeichen.

Sie können auch ein Paket importieren und eine regelmäßige expresion es zu bekommen verwenden:

>>> import re 
>>> theString = "['34325235235']" 
>>> int(re.sub(r'\D', '', theString)) # Optionally parse to int 
+1

Der schlechteste Weg, um dieses Problem zu lösen :-). – Kasramvd

+0

Ich habe meine Antwort aktualisiert, weil Sie an einer Lösung mit regulärem Ausdruck interessiert sein könnten, die besser sein könnte. –

0

Mit re.sub:

>>> my_str = "['45453656565']" 
>>> import re 
>>> re.sub("['\]\[]","",my_str) 
'45453656565' 
0

Statt Ihre Daten von Hacking durch Klammern Strippen, sollten Sie das Skript bearbeiten Das hat es geschafft, nur die Zahlen auszudrucken. Z. B. statt träge von

output.write(str(mylist)) 

tun Sie

for elt in mylist: 
    output.write(elt + "\n") 

Dann schreiben können, wenn Sie Ihre Daten wieder einzulesen, wird es die Zahlen enthalten (als Strings) ohne Anführungszeichen, Kommas oder Klammern.

+0

Ja, Sie haben Recht. Das ist was ich will. Ich brauche keine Streifen mehr – Nguyen

+0

Ich bin froh, das zu hören. Wenn Sie meine Antwort nützlich fanden, bitte "upvote" es. (Du könntest sogar ändern, welche Antwort du "akzeptierst", wenn dir diese besser gefällt als die aktuell akzeptierte.) – alexis

Verwandte Themen