我想从第三个字符到字符串末尾获得一个新字符串,例如myString[2:end]。如果省略第二部分意味着“到结尾”,如果省略第一部分,它是否从头开始?


当前回答

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

既然我还不能发表评论,让我在这里补充我的结论。我确信在访问此页面时,我不是唯一对此感兴趣的人:

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

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

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

 >>>myString[:end]
 'Hello' 

如果将:放在中间,则会得到最简单的子字符串,即第5个字符(计数以0开头,因此在本例中为空):

 >>>myString[end]
 ' '

其他回答

如果myString包含一个从偏移量6开始且长度为9的帐号,则可以通过以下方式提取帐号:acct=myString[6:][:9]。

如果OP接受这一点,他们可能希望以实验的方式,

myString[2:][:999999]

它有效-不会引发错误,也不会出现默认的“字符串填充”。

除了“结束”,你就在那里。这叫做切片表示法。您的示例应为:

new_sub_string = myString[2:]

如果省略了第二个参数,则它隐式地是字符串的结尾。

使用硬编码索引本身可能会一团糟。

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

使用切片可以获得可读性。

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

既然我还不能发表评论,让我在这里补充我的结论。我确信在访问此页面时,我不是唯一对此感兴趣的人:

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

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

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

 >>>myString[:end]
 'Hello' 

如果将:放在中间,则会得到最简单的子字符串,即第5个字符(计数以0开头,因此在本例中为空):

 >>>myString[end]
 ' '

嗯,我遇到了一个需要将PHP脚本转换为Python的情况,它有许多substr(字符串、开头、长度)的用法。如果我选择Python的字符串[开始:结束],我必须计算很多结束索引,所以更简单的方法是使用字符串[开始][:长度],这为我省去了很多麻烦。