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 に答える