这是将此字符串子集化的最佳方法吗?

时间:2016-06-02 16:51:08

标签: python string

我是Python的新手,并希望确保我这样做是最恐怖的方式。

我有一个字符串,其形式类似于:

  

VAR=(X=Y)

我需要第一个=右侧的所有内容(包括任何及所有后续的=)。

由于rsplit()从右向左工作,所以我就这样做了:

  

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

我将其反转,然后将其拆分为=,获取该拆分的第一个元素(最后=左侧的所有内容,或第一个{{1}右侧的所有内容在未反转的字符串中),然后将其反转以使其再次前进。

是否有更好或更惯用的方式来做到这一点?

2 个答案:

答案 0 :(得分:3)

最好的方法是使用第二个参数拆分。

>>> 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.

>>>

所以你可以像下面那样拆分,然后忽略第零个索引并取第一个索引。

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

另一种分割方法是:

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

答案 1 :(得分:2)

partition

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

或者,如果您真的死于使用split及其变体,

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