How do I get a substring of a string in Python?

前端 未结 13 1924
我寻月下人不归
我寻月下人不归 2020-11-22 00:32

Is there a way to substring a string in Python, to get a new string from the third character to the end of the string?

Maybe like myString[2:end]?

相关标签:
13条回答
  • 2020-11-22 01:00

    If myString contains an account number that begins at offset 6 and has length 9, then you can extract the account number this way: acct = myString[6:][:9].

    If the OP accepts that, they might want to try, in an experimental fashion,

    myString[2:][:999999]
    

    It works - no error is raised, and no default 'string padding' occurs.

    0 讨论(0)
  • 2020-11-22 01:02

    Well, I got a situation where I needed to translate a PHP script to Python, and it had many usages of substr(string, beginning, LENGTH).
    If I chose Python's string[beginning:end] I'd have to calculate a lot of end indexes, so the easier way was to use string[beginning:][:length], it saved me a lot of trouble.

    0 讨论(0)
  • 2020-11-22 01:04

    Is there a way to substring a string in Python, to get a new string from the 3rd character to the end of the string?

    Maybe like myString[2:end]?

    Yes, this actually works if you assign, or bind, the name,end, to constant singleton, None:

    >>> end = None
    >>> myString = '1234567890'
    >>> myString[2:end]
    '34567890'
    

    Slice notation has 3 important arguments:

    • start
    • stop
    • step

    Their defaults when not given are None - but we can pass them explicitly:

    >>> stop = step = None
    >>> start = 2
    >>> myString[start:stop:step]
    '34567890'
    

    If leaving the second part means 'till the end', if you leave the first part, does it start from the start?

    Yes, for example:

    >>> start = None
    >>> stop = 2
    >>> myString[start:stop:step]
    '12'
    

    Note that we include start in the slice, but we only go up to, and not including, stop.

    When step is None, by default the slice uses 1 for the step. If you step with a negative integer, Python is smart enough to go from the end to the beginning.

    >>> myString[::-1]
    '0987654321'
    

    I explain slice notation in great detail in my answer to Explain slice notation Question.

    0 讨论(0)
  • 2020-11-22 01:06
    >>> x = "Hello World!"
    >>> x[2:]
    'llo World!'
    >>> x[:2]
    'He'
    >>> x[:-2]
    'Hello Worl'
    >>> x[-2:]
    'd!'
    >>> x[2:-2]
    'llo Worl'
    

    Python calls this concept "slicing" and it works on more than just strings. Take a look here for a comprehensive introduction.

    0 讨论(0)
  • 2020-11-22 01:13

    Using hardcoded indexes itself can be a mess.

    In order to avoid that, Python offers a built-in object slice().

    string = "my company has 1000$ on profit, but I lost 500$ gambling."
    

    If we want to know how many money I got left.

    Normal solution:

    final = int(string[15:19]) - int(string[43:46])
    print(final)
    >>>500
    

    Using slices:

    EARNINGS = slice(15, 19)
    LOSSES = slice(43, 46)
    final = int(string[EARNINGS]) - int(string[LOSSES])
    print(final)
    >>>500
    

    Using slice you gain readability.

    0 讨论(0)
  • 2020-11-22 01:15

    One example seems to be missing here: full (shallow) copy.

    >>> x = "Hello World!"
    >>> x
    'Hello World!'
    >>> x[:]
    'Hello World!'
    >>> x==x[:]
    True
    >>>
    

    This is a common idiom for creating a copy of sequence types (not of interned strings), [:]. Shallow copies a list, see Python list slice syntax used for no obvious reason.

    0 讨论(0)
提交回复
热议问题