47

处理 python 任务,并对以下代码上下文中的 [:-1] 含义感到好奇:instructions = f.readline()[:-1]

在 SO 和 Google 上搜索过这里,但无济于事。想要一个解释!

4

4 回答 4

58

它对字符串进行切片以省略最后一个字符,在本例中为换行符:

>>> 'test\n'[:-1]
'test'

由于这甚至适用于空字符串,因此删除最后一个字符(如果存在)是一种非常安全的方法:

>>> ''[:-1]
''

这适用于任何序列,而不仅仅是字符串。

line.rstrip('\n')对于文本文件中的行,我实际上只会删除一个换行符;有时文件中的最后一行不以换行符结尾,使用切片然后删除该行最后的任何其他字符。

于 2013-03-20T21:37:58.247 回答
15

它的意思是“序列的所有元素,但最后一个元素”。在它的上下文中f.readline()[:-1]意味着“我很确定该行以换行符结尾,我想删除它”。

于 2013-03-20T21:38:13.970 回答
14

它选择除了序列的最后一个元素之外的所有元素。

下面使用列表的示例:

In [15]: a=range(10)

In [16]: a
Out[16]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [17]: a[:-1]
Out[17]: [0, 1, 2, 3, 4, 5, 6, 7, 8]
于 2013-03-20T21:38:11.280 回答
3

它从列表中获取所有元素(或字符串中的字符),但最后一个元素。

:表示遍历列表 -1意味着列表的最后一个元素

于 2013-03-20T21:37:56.640 回答