2017-01-26 9 views
-2

Ich habe verzweifelt versucht, diese Arbeit zu machen, aber es entfernt nicht die ersten Zeichen.Regex zum Entfernen vom Anfang der Zeichenfolge '[' vom Ende ']'

[13, 45] # What I have 
13, 45 # What I want 

und meine regex: re.sub(r"^\s*([\s*)?|(\s*[)?\s*$",'',string)

+0

versuchen Sie nicht, eine Python-Liste zufällig zu analysieren? –

+0

Nein Ich habe eine Zeichenfolge, deren Format ist wie eine Liste und möchte es in eine Liste konvertieren, aber zuerst muss ich Entfernen Sie die Zeichen [] und teilen Sie die Zeichenfolge dann auf. – user3807593

+0

Siehe https://ideone.com/ZxCj8l, 'ast.literal_eval (s)'. –

Antwort

4

Ihre Regex funktioniert nicht, weil Sie nicht Ihre entkommen letzten [ (was sowieso ] sollte dies funktionieren sollte.

im Terminal gibt
re.sub(r"^\s*\[\s*|\s*\]\s*$",'',string) 

das Lauf:

$ python3 
Python 3.5.2 (default, Nov 17 2016, 17:05:23) 
[GCC 5.4.0 20160609] on linux 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import re 
>>> st=' [13, 45]' 
>>> re.sub(r"^\s*\[\s*|\s*\]\s*$",'',st) 
'13, 45' 
+0

Das war's! Du bist der Mann. – user3807593

+0

@ user3807593 akzeptiere seine Antwort –

+0

Du kannst einfach "[13, 45]" [1: -1] 'verwenden, aber wenn du auf Regex bestehst, verwende: ' data = re.search ("\ [(. *?) \] ", Text) .group (1)' – Tushortz

0

Wenn Sie sicher sind, dass eckige Klammern nur am Anfang und Ende des Strings sind, dann können Sie String verwenden Sie den gewünschten Wert zu erhalten.

str_new = str[1:len-1] 
+0

Auch hier muss ich Regex nicht schneiden verwenden. – user3807593

+0

Wird gesagt, dass der String mit einem '[' beginnen wird, vorausgesetzt, dass die Anfangsregexte des OPs möglich ist, dass es Leerzeichen in der Front etc gibt, so sollte der String vielleicht zuerst entfernt werden. –

Verwandte Themen