2016-06-02 13 views
0

Ich bin neu bei Python und möchte sicherstellen, dass ich das auf die pythonischste Art mache.Ist dies der beste Weg, um diese Zeichenfolge zu unterteilen?

Ich habe eine Zeichenfolge mit einer Form von so etwas wie diese:

VAR=(X=Y)

Und ich brauche alles rechts von den ersten = (einschließlich aller nachfolgenden =).

Seit rsplit() Werke von rechts nach links, das ist, wie ich es tat:

definition=line[::-1].rsplit('=', 1)[0][::-]

ich es umgekehrt, spaltete es dann auf dem =, nehmen Sie das erste Element dieser Split (alles auf der linken Seite der letzten =, oder alles auf der rechten Seite der ersten = in der nicht reversierten Zeichenfolge), dann kehren Sie es um es wieder vorwärts zu bekommen.

Gibt es einen besseren oder mehr idiomatischen Weg, dies zu tun?

Antwort

2

Wie wäre es partition:

>>> s = "VAR=(X=Y)" 
>>> s.partition("=") 
('VAR', '=', '(X=Y)') 
>>> s.partition("=")[2] 
'(X=Y)' 

Oder, wenn Sie wirklich tot-Set auf nur split mit und Varianten davon,

>>> s.split("=",1)[1] 
'(X=Y)' 
3

Der beste Weg ist Split mit dem zweiten zu verwenden Parameter.

>>> help(''.split) 
Help on built-in function split: 

split(...) 
    S.split([sep [,maxsplit]]) -> list of strings 

    Return a list of the words in the string S, using sep as the 
    delimiter string. If maxsplit is given, at most maxsplit 
    splits are done. If sep is not specified or is None, any 
    whitespace string is a separator and empty strings are removed 
    from the result. 

>>> 

Sie können also wie folgt teilen und ignorieren Sie dann den nullten Index und nehmen den ersten Index.

>>> "VAR=(X=Y)".split('=',1) 
['VAR', '(X=Y)'] 
>>> 

Eine andere Möglichkeit, Split zu tun ist:

>>> 
>>> import re 
>>> re.split('=', 'VAR=(X=Y)', 1) 
['VAR', '(X=Y)'] 
>>> 
Verwandte Themen