Как получить символ из строки по индексу?


допустим у меня есть строка, которая состоит из-х неизвестных символов. Как я мог получить char nr. 13 или char nr. x-14?

6 58

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]

еще одно рекомендуемое усилие для понимания списков и индексов:

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