[python] 인덱스로 문자열에서 문자를 얻는 방법?

x 개의 알 수없는 문자로 구성된 문자열이 있다고 가정 해 보겠습니다. 문자 번호를 어떻게 얻을 수 있습니까? 13 또는 char nr. x-14?



답변

먼저 필요한 숫자가 시작 또는 끝의 문자열에 대한 유효한 인덱스 인지 확인한 다음 배열 첨자 표기법을 사용할 수 있습니다. 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'


답변

이전 답변 ASCII character은 특정 색인 에 대해 다룹니다 .

Unicode characterPython 2에서 특정 인덱스 를 얻는 것은 약간 번거 롭습니다.

와 예, s = '한국中国にっぽん'이다 <type 'str'>,

__getitem__예를 들어, s[i]은 (는) 원하는 곳으로 연결되지 않습니다. 그것은 같은 semething을 뱉어 낼 것 입니다. (많은 유니 코드 문자가 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 출력 m

입력 -3 출력 p


답변

말로 설명하는 것보다 더 분명하다고 생각합니다

s = 'python'
print(len(s))
6
print(s[5])
'n'
print(s[len(s) - 1])
'n'
print(s[-1])
'n'