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


93

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

답변:


131

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

1
음의 정수를 전달할 수 있습니다.
Aviram Segal 2012

@AviramSegal 수정 해 주셔서 감사합니다. 예, 가능하지만 문자열 길이의 제한도 있어야합니다.
DhruvPathak

1
당신의 편집의 가장 좋은 대답 한 후, 최대 대신 : 아래의 투표
Aviram 시걸

1
이 답변은 각 색인에 고유 한 문자가있는 다른 단어를 사용하여 개선 할 수 있습니다. 그대로 s [3]는 어느 'l'이 반환되는지 모호합니다.
될 종류에 새 사용자

1
s[-5]작동 할 수 있지만 s[-6]범위를 벗어난 인덱스 오류를 불평합니까? 파이썬에서 문자열 객체의 구현에 대해 궁금합니다.
Alston

5
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'

질문이 기본적인 것처럼 보일지라도 무슨 일이 일어나고 있는지에 대한 구두 설명을 제공해야합니다.
Hannele 2012 년

희망, 약간의 설명과 함께 답을 업데이트는 :) 도움이
avasal

3

이전 답변 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]

2

Python.org에는 여기 에 문자열에 대한 훌륭한 섹션이 있습니다 . "슬라이스 표기법"이라고 표시된 곳까지 아래로 스크롤합니다.


1

목록과 색인을 이해하기위한 또 다른 권장 사항 :

L = ['a', 'b', 'c']
for index, item in enumerate(L):
    print index + '\n' + item

0
a
1
b
2
c 

0

이것은 요점을 더 명확히해야합니다.

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


0

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

s = 'python'
print(len(s))
6
print(s[5])
'n'
print(s[len(s) - 1])
'n'
print(s[-1])
'n'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.