Bagaimana cara mendapatkan char dari string demi indeks?

91

Katakanlah saya memiliki string yang terdiri dari x karakter yang tidak diketahui. Bagaimana saya bisa mendapatkan char nr. 13 atau char nr. x-14?

TheBW
sumber

Jawaban:

129

Pertama pastikan nomor yang diperlukan adalah indeks yang valid untuk string dari awal atau akhir, lalu Anda cukup menggunakan notasi subskrip array. digunakan len(s)untuk mendapatkan panjang string

>>> 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
>>> 
DhruvPathak
sumber
1
Anda dapat memberikan bilangan bulat negatif
Aviram Segal
@AviramSegal Terima kasih atas koreksinya, Ya kami bisa, tetapi mereka juga harus berada dalam batas panjang string.
DhruvPathak
1
setelah Anda mengeditnya, jawaban terbaiknya, memilih ke atas, bukan ke bawah :)
Aviram Segal
1
Jawaban ini dapat ditingkatkan dengan menggunakan kata yang berbeda dengan karakter unik di setiap indeks. Karena ia berdiri, s [3] tidak jelas tentang 'l' yang mana ia akan kembali.
Bersikaplah Baik Kepada Pengguna Baru
1
Mengapa s[-5]bisa bekerja, tetapi s[-6]akan mengeluh kesalahan indeks di luar jangkauan? Sangat penasaran dengan implementasi objek string dengan Python.
Alston
5
In [1]: x = "anmxcjkwnekmjkldm!^%@(*)#_+@78935014712jksdfs"
In [2]: len(x)
Out[2]: 45

Sekarang, Untuk rentang indeks positif untuk x adalah dari 0 hingga 44 (yaitu panjang - 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'

Untuk indeks negatif, indeks berkisar dari -1 hingga -45

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

Untuk indeks negatif, negatif [panjang -1] yaitu nilai terakhir yang valid dari indeks positif akan memberikan elemen daftar kedua karena daftar dibaca dalam urutan terbalik,

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

Lainnya, contoh indeks,

In [9]: x[1]
Out[9]: 'n'
In [10]: x[-9]
Out[10]: '7'
avasal
sumber
Anda harus memberikan deskripsi verbal tentang apa yang sedang terjadi, meskipun pertanyaan itu mungkin tampak mendasar bagi Anda.
Hannele
Memperbarui jawaban dengan beberapa deskripsi, semoga membantu :)
avasal
3

Jawaban sebelumnya mencakup tentang ASCII characterindeks tertentu.

Agak merepotkan untuk mendapatkan Unicode characterindeks tertentu dengan Python 2.

Misalnya, dengan s = '한국中国にっぽん'yang mana <type 'str'>,

__getitem__, misalnya, s[i]tidak membawa Anda ke tempat yang Anda inginkan. Ini akan memuntahkan sesuatu seperti . (Banyak karakter Unicode lebih dari 1 byte tetapi __getitem__di Python 2 bertambah 1 byte.)

Dalam kasus Python 2 ini, Anda dapat menyelesaikan masalah dengan mendekode:

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

Python.org memiliki bagian yang sangat bagus tentang string di sini . Gulir ke bawah di mana dikatakan "notasi irisan".

Joel Cornett
sumber
1

Latihan lain yang direkomendasikan untuk memahami daftar dan indeks:

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

0
a
1
b
2
c 
Droogans
sumber
0

Ini selanjutnya harus memperjelas poin:

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

Masukan 3 Keluaran m

Input -3 Output hlm

Arnab Ghosal
sumber
0

Saya pikir ini lebih jelas daripada mendeskripsikannya dengan kata-kata

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