Как получить символ из строки по индексу?
допустим у меня есть строка, которая состоит из-х неизвестных символов. Как я мог получить char nr. 13 или char nr. x-14?
6 ответов:
сначала убедитесь, что необходимое число допустимый индекс строки из начала и конца , то вы можете просто использовать нотацию массива. используйте
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 >>>
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'
Python.org имеет отличный раздел по строкам здесь. Прокрутите вниз до места, где он говорит "slice notation".
предыдущие ответы охватывают о
ASCII character
при определенном индексе.это немного хлопотно, чтобы получить
Unicode character
при определенном индексе в Python 2.Е. Г., с
s = '한국中国にっぽん'
что это<type 'str'>
,
__getitem__
, например,s[i]
, не ведет вас туда, куда вы хотите. Он будет выплевывать семя, как�
. (Многие символы Юникода имеют размер более 1 байта, но__getitem__
в Python 2 увеличивается на 1 байт.)в этом случае Python 2, Вы можете решите проблему путем декодирования:
s = '한국中国にっぽん' s = s.decode('utf-8') for i in range(len(s)): print s[i]