Допустим, у меня есть строка, состоящая из x неизвестных символов. Как я мог получить char nr. 13 или char № х-14?
91
Сначала убедитесь, что требуемое число является допустимым индексом для строки от начала или до конца, затем вы можете просто использовать нотацию индекса массива. использовать, len(s)
чтобы получить длину строки
>>> s = "python"
>>> s[3]
'h'
>>> s[6]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> s[0]
'p'
>>> s[-1]
'n'
>>> s[-6]
'p'
>>> s[-7]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>>
s[-5]
может работать, ноs[-6]
будет жаловаться на ошибку индекса вне допустимого диапазона? Так любопытно насчет реализации строкового объекта в Python.In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs" In [2]: len(x) Out[2]: 45
Теперь, для положительных диапазонов индекса для x от 0 до 44 (т.е. длина - 1)
In [3]: x[0] Out[3]: 'a' In [4]: x[45] --------------------------------------------------------------------------- IndexError Traceback (most recent call last) /home/<ipython console> in <module>() IndexError: string index out of range In [5]: x[44] Out[5]: 's'
Для отрицательного индекса индекс колеблется от -1 до -45.
In [6]: x[-1] Out[6]: 's' In [7]: x[-45] Out[7]: 'a
Для отрицательного индекса отрицательная [длина -1], то есть последнее действительное значение положительного индекса даст второй элемент списка, поскольку список читается в обратном порядке,
In [8]: x[-44] Out[8]: 'n'
Другое, примеры указателя,
In [9]: x[1] Out[9]: 'n' In [10]: x[-9] Out[10]: '7'
источник
Предыдущие ответы касаются
ASCII character
определенного индекса.Получить
Unicode character
по определенному индексу в Python 2 немного затруднительно .Например, с
s = '한국中国にっぽん'
которым есть<type 'str'>
,__getitem__
, напримерs[i]
,, не приведет вас туда, куда вы хотите. Выплюнет что-то вроде�
. (Многие символы Unicode имеют размер более 1 байта, но__getitem__
в Python 2 увеличиваются на 1 байт.)В этом случае Python 2 вы можете решить проблему путем декодирования:
s = '한국中国にっぽん' s = s.decode('utf-8') for i in range(len(s)): print s[i]
источник
Python.org имеет отличный раздел о строках здесь . Прокрутите вниз до надписи «обозначение среза».
источник
Еще одно рекомендованное упражнение для понимания списков и индексов:
L = ['a', 'b', 'c'] for index, item in enumerate(L): print index + '\n' + item 0 a 1 b 2 c
источник
Это должно дополнительно прояснить моменты:
a = int(raw_input('Enter the index')) str1 = 'Example' leng = len(str1) if (a < (len-1)) and (a > (-len)): print str1[a] else: print('Index overflow')
Вход 3 Выход м
Вход -3 Выход p
источник
Думаю, это понятнее, чем описывать словами
s = 'python' print(len(s)) 6 print(s[5]) 'n' print(s[len(s) - 1]) 'n' print(s[-1]) 'n'
источник