Dizine göre karakter dizisinden nasıl alınır?


91

Diyelim ki x bilinmeyen karakterden oluşan bir dizgem var. Nasıl char nr alabilirim. 13 veya karakter no. x-14?

Yanıtlar:


129

Öncelikle gerekli sayının baştan veya sondan itibaren dize için geçerli bir dizin olduğundan emin olun , ardından dizi alt simge gösterimini kullanabilirsiniz. len(s)ip uzunluğunu almak için kullanın

>>> 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
Negatif tamsayılar geçebilirsiniz
Aviram Segal

@AviramSegal Düzeltme için teşekkürler, Evet yapabiliriz, ancak bunlar da dizi uzunluğu sınırları içinde olmalıdır.
DhruvPathak

1
Düzenlemenizden sonra en iyi cevap,
olumsuz

1
Bu cevap, her dizinde benzersiz karakterlere sahip farklı bir kelime kullanılarak geliştirilebilir. Durduğu gibi s [3], hangi 'l'in döndüğü konusunda belirsizdir.
Yeni Kullanıcılara Nazik Olun

1
Neden s[-5]çalışabilir, ancak s[-6]aralık dışı bir hatadan şikayet eder? Python'daki string nesnesinin uygulamasını çok merak ediyorum.
Alston

5
In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs"
In [2]: len(x)
Out[2]: 45

Şimdi, pozitif indeks aralıkları için x için 0'dan 44'e kadardır (yani uzunluk - 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'

Negatif dizin için dizin -1 ile -45 arasındadır

In [6]: x[-1]
Out[6]: 's'
In [7]: x[-45]
Out[7]: 'a

Negatif indeks için, negatif [uzunluk -1], yani pozitif indeksin son geçerli değeri, liste ters sırada okundukça ikinci liste elemanını verecektir,

In [8]: x[-44]
Out[8]: 'n'

Diğer, indeksin örnekleri,

In [9]: x[1]
Out[9]: 'n'
In [10]: x[-9]
Out[10]: '7'

Soru size temel görünse de, neler olup bittiğine dair bazı sözlü açıklamalar sunmalısınız.
Hannele

Cevap bazı açıklamalarla güncellendi, umarım yardımcı olur :)
avasal

3

Önceki cevaplar ASCII character, belirli bir dizinde yer alır.

Unicode characterPython 2'de belirli bir indekste almak biraz zahmetli .

Örn, s = '한국中国にっぽん'olan <type 'str'>,

__getitem__örneğin, s[i]sizi istediğiniz yere götürmez. Böyle bir şey tükürecek . (Birçok Unicode karakteri 1 bayttan fazladır ancak __getitem__Python 2'de 1 bayt artırılır.)

Bu Python 2 durumunda, kodu çözerek sorunu çözebilirsiniz:

s = '한국中国にっぽん'
s = s.decode('utf-8')
for i in range(len(s)):
    print s[i]

2

Python.org burada dizelerle ilgili mükemmel bir bölüme sahiptir . "Dilim notasyonu" yazan yere ilerleyin.


1

Listeleri ve dizinleri anlamak için önerilen başka bir alıştırma:

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

0
a
1
b
2
c 

0

Bu, noktaları daha da netleştirmelidir:

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

Giriş 3 Çıkış m

Giriş -3 Çıkış p


0

Sanırım bu, kelimelerle tarif etmekten daha açık

s = 'python'
print(len(s))
6
print(s[5])
'n'
print(s[len(s) - 1])
'n'
print(s[-1])
'n'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.