29

有人给了我一个截断字符串的语法,如下所示:

string = "My Text String"

print string [0:3] # This is just an example

我不确定这叫什么(字符串 [0:3] 语法),所以我很难在互联网上查找它并了解它是如何工作的。到目前为止,我认为它是这样工作的:

  • string[0:3] # 返回字符串的前 3 个字符
  • string[0:-3] # 将返回字符串的最后 3 个字符
  • string[3:-3] # 似乎截断了前 3 个字符和后 3 个字符
  • string[1:0] # 我返回 2 个单引号....不确定这是在做什么
  • string[-1:1] # 和上一个一样

无论如何,我可能还可以添加一些其他示例,但我的观点是我是这个功能的新手,我想知道它叫什么以及在哪里可以找到更多信息。我确定我只是在某处缺少一个很好的参考。

感谢您的任何建议,迈克

4

3 回答 3

33

它被称为切片。来自 Common Sequence Operations 下的 python 文档:

s[i:j]

从 i 到 j 的 s 切片被定义为具有索引 k 的项目序列,使得 i <= k < j。如果 i 或 j 大于 len(s),则使用 len(s)。如果 i 被省略或 None,使用 0。如果 j 被省略或 None,使用 len(s)。如果 i 大于或等于 j,则切片为空。

来源

于 2012-04-05T19:00:20.593 回答
12

正如@Uku 和@thebjorn 所说,它被称为切片

但是一种更简单的思考方法是将 String 视为列表,例如,您可以这样做:

text = 'Any String'
for letter in text:
    print letter

如果您想在字符串中获取特定字母,则相同:

>> text = 'Any String'
>> text[4]
'S'

ps.:记住它是从零开始的,所以 text[4] 返回第 5 个字母。

使用 Slice,它将从原始字符串返回一个“子字符串”文本 [i:j],其中“i”是初始索引(包括),“j”是结束索引(不包括),例如:

>> text = 'Any String'
>> text[4:6] # from index 4 to 6 exclusive, so it returns letters from index 4 and 5
'St'
>> text[0:4]
'Any '
>> text[:4] # omiting the "i" index means i = 0
'Any '
>> text[4:] # omitting the "j" index means until the end of the string

负索引相对于字符串的结尾,就像从负索引替换为“len(text) + i”一样。

在我们的例子中 len(text) 是 10,负索引 -1 就像使用 text[9] 获取最后一个元素,-2 将返回最后一个元素,依此类推。

在您发送的示例中, string[0:-3] 应该返回除最后 3 个字符之外的所有内容,而 string[3:-3] 应该返回除前 3 个和后 3 个字符之外的所有内容。

希望它有所帮助。

于 2012-04-05T19:34:35.233 回答
2

它被称为切片,阅读更多关于它的信息,例如:http: //docs.python.org/tutorial/introduction.html#strings

于 2012-04-05T19:02:40.123 回答