Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中readline中的字符串从1开始?_Python_String_Indexing_Readline - Fatal编程技术网

python中readline中的字符串从1开始?

python中readline中的字符串从1开始?,python,string,indexing,readline,Python,String,Indexing,Readline,我打开一个文件 line=file.readline 并使用第[0:2]行选择行中的前3个字符。 但是weired,行[0:2]只包含2个字符。 因此,我必须使用第[0:3]行来选择前3个字符,它可以工作 但是为什么呢 我检查了文件,每行开头没有空格 任何人都知道这一点,因为您的片段从字符0之前到字符2之前。也就是说,从字符0之前到字符1之后。也就是说,前两个字符以字符0开头。0:2中的第一个数字0是包含的,0:2中的第二个数字2是独占的 它就像一个C++/C for循环: for (int n

我打开一个文件

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

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


任何人都知道这一点,因为您的片段从字符0之前到字符2之前。也就是说,从字符0之前到字符1之后。也就是说,前两个字符以字符0开头。

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循环没有执行。如果需要倒计时,则使用包含的结束绑定和独占的开始绑定。

以下是阅读它的解释,很好!:

记住切片工作原理的一种方法是将索引视为指向字符之间,第一个字符的左边缘编号为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的边之间的所有字符组成。

在Python切片中,您可以指定您想要的第一项,然后是您不想要的第一项。

哦,我的英语!,字符0之前是-1是什么意思?不,是字符0之前的点,但在前一个字符之后。我明白了。这真是一个很好的解释!我会读那个教程!