【问题标题】:string from readline start from 1 in python?来自readline的字符串从python中的1开始?
【发布时间】:2012-02-28 00:47:40
【问题描述】:

我打开一个文件

line = file.readline() 并使用 line[0:2] 选择行中的前 3 个字符。 但奇怪的是,line[0:2] 只包含 2 个字符。 因此,我必须使用line[0:3] 来选择前 3 个字符,并且它可以工作 但是为什么呢?

我检查了文件,每行开头没有空格

有人知道这个

【问题讨论】:

标签: python string indexing readline


【解决方案1】:

这是来自Python's tutorial的解释(阅读,很好!):

记住切片如何工作的一种方法是将索引视为字符之间的指向,第一个字符的左边缘编号为 0。然后 n 个字符的字符串的最后一个字符的右边缘具有索引 n,例如:

 +---+---+---+---+---+
 | H | e | l | p | A |
 +---+---+---+---+---+
 0   1   2   3   4   5
-5  -4  -3  -2  -1

第一行数字给出了索引 0...5 在字符串中的位置;第二行给出了相应的负指数。从 i 到 j 的切片由分别标记为 i 和 j 的边之间的所有字符组成。

【讨论】:

  • 我明白了。这真是很好的解释!我会读那个教程!
【解决方案2】:

第一个数字(0:2 中的 0)包含在内,第二个数字(0:2 中的 2)不包含。

这就像一个 C++/C# for 循环:

for (int n = i ; n < j ; n++)
{
       ...
}

而不是

for (int n = i ; n <= j ; n++)

顺便说一下(但稍微偏离主题):使用包含开始绑定和排他结束绑定是一种很好的做法。如果 i 和 j 相同,则不会遇到问题(即不执行 for 循环)。如果您需要倒数,请使用包含结束界限和排斥开始界限。

【讨论】:

    【解决方案3】:

    因为您的切片从字符 0 之前到字符 2 之前。也就是说,从字符 0 之前到字符 1 之后。也就是说,前两个字符从字符 0 开始。

    【讨论】:

    • 哦,我的英语!,“字符 0 之前”是什么意思,是 -1 吗?
    • 没有。它是字符 0 之前的点,但在前一个字符之后。
    【解决方案4】:

    在 Python 切片中,您指定第一个您想要的项目,然后是您想要的第一个项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-03
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      • 2016-01-09
      • 2018-07-26
      相关资源
      最近更新 更多