有没有办法在Python中对字符串进行子串?python


Answers

只是为了没有人提到它的完整性。 数组切片的第三个参数是一个步骤。 所以扭转一个字符串是简单的:

some_string[::-1]

或选择替代字符将是:

"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"

通过字符串向前和向后的顺序能够保持与从开始或结束的数组切片的一致性。

Question

有没有办法在Python中对字符串进行子串,从第3个字符到该字符串的末尾获取一个新的字符串?

也许像myString[2:end]

如果离开第二部分意味着“直到结束”,如果你离开第一部分,它从一开始就开始吗?




实现这一点的一个常见方法是通过字符串切片。 MyString[a:b]给你一个从索引a到(b - 1)的子串,




除了“结束”之外,你已经有了。 它称为切片符号。 你的例子应该读

new_sub_string = myString[2:]

如果你省略了第二个参数,那么它隐含地是字符串的结尾。




我想在讨论中增加两点:

  1. 您可以在空白处使用None来指定“从一开始”或“到结束”:

    'abcde'[2:None] == 'abcde'[2:] == 'cde'

    这在函数中特别有用,在这些函数中,您不能提供空格作为参数:

    def substring(s, start, end):
        """Remove `start` characters from the beginning and `end` 
        characters from the end of string `s`.
    
        Examples
        --------
        >>> substring('abcde', 0, 3)
        'abc'
        >>> substring('abcde', 1, None)
        'bcde'
        """
        return s[start:end]
  2. Python有切片对象:

    idx = slice(2, None)
    'abcde'[idx] == 'abcde'[2:] == 'cde'



没有人提到使用hardcode索引本身可能会混乱。

为了避免这种情况,python提供了一个内置的对象slice()

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

如果我们想知道剩下多少钱。

正常解决方案

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

使用切片:

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

您可以注意到使用切片,您可以获得可读性