Working on a python assignment and was curious as to what [:-1] means in the context of the following code: instructions = f.readline()[:-1]
Have searched on here on S.O. and on Google but to no avail. Would love an explanation!
24 Answers
It slices the string to omit the last character, in this case a newline character:
>>> 'test\n'[:-1] 'test' Since this works even on empty strings, it's a pretty safe way of removing that last character, if present:
>>> ''[:-1] '' This works on any sequence, not just strings.
For lines in a text file, I’d actually use line.rstrip('\n') to only remove a newline; sometimes the last line in the file doesn’t end in a newline character and using slicing then removes whatever other character is last on that line.
It means "all elements of the sequence but the last". In the context of f.readline()[:-1] it means "I'm pretty sure that line ends with a newline and I want to strip it".
It selects all but the last element of a sequence.
Example below using a list:
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] 1It gets all the elements from the list (or characters from a string) but the last element.
: represents going through the list -1 implies the last element of the list