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


当前回答

我想在讨论中补充两点:

您可以在空白处使用None来指定“从开始”或“到结束”:“abcde”[2:无]==“abcde'[2:]==”cde“这在函数中特别有用,因为在函数中不能提供空格作为参数:def子字符串(s,start,end):“”“删除开头和结尾的“start”字符字符串“s”结尾的字符。示例-------->>>子字符串('abcde',0,3)“abc”>>>子字符串('abcde',1,无)“bcdedit”"""return s[开始:结束]Python具有切片对象:idx=切片(2,无)'abcde'[idx]=='abcde'[2:]=='cde'

其他回答

我想在讨论中补充两点:

您可以在空白处使用None来指定“从开始”或“到结束”:“abcde”[2:无]==“abcde'[2:]==”cde“这在函数中特别有用,因为在函数中不能提供空格作为参数:def子字符串(s,start,end):“”“删除开头和结尾的“start”字符字符串“s”结尾的字符。示例-------->>>子字符串('abcde',0,3)“abc”>>>子字符串('abcde',1,无)“bcdedit”"""return s[开始:结束]Python具有切片对象:idx=切片(2,无)'abcde'[idx]=='abcde'[2:]=='cde'

实现这一点的常见方法是通过字符串切片。

MyString[a:b]提供了从索引a到(b-1)的子字符串。

我有一个更简单的解决方案,使用for循环来查找字符串中的给定子字符串。假设我们有两个字符串变量,

main_string = "lullaby"
match_string = "ll"

如果要检查主字符串中是否存在给定的匹配字符串,可以执行以下操作:,

match_string_len = len(match_string)
for index,value in enumerate(main_string):
    sub_string = main_string[index:match_string_len+index]
    if sub_string == match_string:
       print("match string found in main string")

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

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

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