python字符串长度 - python转义字符




有没有办法在Python中对字符串进行子串处理? (7)

有没有办法在Python中对字符串进行子串处理,以便从第三个字符到字符串的末尾得到一个新的字符串?

也许像myString[2:end]

是的,如果您将名称, end ,分配或bind为常量单例式,则这实际上起作用None

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

切片符号有三个重要参数:

  • 开始
  • 停止

没有给出它们的默认值是None - 但我们可以明确地传递它们:

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

如果离开第二部分意味着'直到结束',如果离开第一部分,它是否从一开始就开始?

是的,例如:

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

请注意,我们在切片中包含了开始,但我们只会去并不包括停止。

当步长为None ,默认情况下,该步骤使用1 。 如果你使用负整数,Python足够聪明,可以从头到尾。

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

我在解释切片符号问题的答案中详细解释切片符号。

有没有办法在Python中对字符串进行子串处理,以便从第三个字符到字符串的末尾得到一个新的字符串?

也许像myString[2:end]

如果离开第二部分意味着'直到结束',如果离开第一部分,它是否从一开始就开始?


Substr()通常(即PHP,Perl)以这种方式工作:

s = Substr(s, beginning, LENGTH)

所以参数开始和长度

但是Python的行为是不同的,它期望在END(!)之后开始。 初学者很难发现这一点。 所以正确的替代Substr(s,开始,LENGTH)是

s = s[ beginning : beginning + LENGTH]

也许我错过了,但是我在这个页面上找不到原始问题的完整答案,因为变量在这里没有进一步讨论。 所以我不得不继续寻找。

由于我还没有被允许发表评论,所以让我在这里加上我的结论。 我确信在访问此页面时我不是唯一对此感兴趣的人:

 >>>myString = 'Hello World'
 >>>end = 5

 >>>myString[2:end]
 'llo'

如果你离开第一部分,你会得到

 >>>myString[:end]
 'Hello' 

如果你离开:在中间,你得到最简单的子字符串,这将是第5个字符(从0开始计数,所以在这种情况下它是空白的):

 >>>myString[end]
 ' '

只是为了完整,因为没有人提到过它。 数组切片的第三个参数是一个步骤。 所以颠倒一个字符串就像下面这样简单:

some_string[::-1]

或者选择替代字符将是:

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

在字符串中前后移动的能力与从开始或结束开始排列切片保持一致。


我想在讨论中增加两点意见:

  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有slice对象:

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

没有人提及使用硬编码索引本身可能是一团糟。

为了避免这种情况,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

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


>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'

Python将这个概念称为“切片”,它不仅仅适用于字符串。 here看一看全面的介绍。







string