Pertanyaan Apakah ada cara untuk substring string dengan Python?


Apakah ada cara untuk substring string dengan Python, untuk mendapatkan string baru dari karakter ke-3 ke ujung string?

Mungkin suka myString[2:end]?

Jika meninggalkan bagian kedua berarti 'sampai akhir', jika Anda meninggalkan bagian pertama, apakah itu dimulai dari awal?


1589
2018-03-19 17:29


asal


Jawaban:


>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'

Python menyebut konsep ini "mengiris" dan berfungsi lebih dari sekadar string. Lihatlah sini untuk pengenalan yang komprehensif.


2409
2018-03-19 17:30



Hanya untuk kelengkapan karena tidak ada orang lain yang menyebutkannya. Parameter ketiga ke array array adalah langkah. Jadi membalikkan string sesederhana:

some_string[::-1]

Atau memilih karakter pengganti adalah:

"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"

Kemampuan untuk melangkah maju dan mundur melalui string mempertahankan konsistensi dengan mampu menyusun potongan dari awal atau akhir.


305
2018-03-20 00:58



Substr () biasanya (yaitu PHP dan Perl) bekerja seperti ini:

s = Substr(s, beginning, LENGTH)

Jadi parameternya beginning dan LENGTH.

Tetapi perilaku Python berbeda; ia mengharapkan awal dan satu setelah END (!). Ini sulit dilihat oleh pemula. Jadi pengganti yang benar untuk Substr (s, awal, LENGTH) adalah

s = s[ beginning : beginning + LENGTH]

91
2017-08-04 11:43



Cara umum untuk mencapai ini adalah dengan mengiris String. MyString[a:b] memberi Anda substring dari indeks a ke (b - 1)


45
2018-03-02 05:19



Satu contoh tampaknya tidak ada di sini: salinan penuh (dangkal).

>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>> 

Ini adalah idiom umum untuk membuat salinan jenis urutan (bukan string yang diinternet). [:] Dangkal menyalin daftar, Lihat python-list-slice-used-for-no-obvious-reason.


17
2018-03-19 18:02



Apakah ada cara untuk substring string dengan Python, untuk mendapatkan string baru dari karakter ke-3 ke ujung string?

Mungkin suka myString[2:end]?

Ya, ini benar-benar berfungsi jika Anda menetapkan, atau mengikat, nama,end, untuk tunggal konstan, None:

>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'

Notasi slice memiliki 3 argumen penting:

  • mulai
  • berhenti
  • langkah

Default mereka ketika tidak diberikan adalah None - tetapi kita dapat meneruskannya secara eksplisit:

>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'

Jika meninggalkan bagian kedua berarti 'sampai akhir', jika Anda meninggalkan bagian pertama, apakah itu dimulai dari awal?

Ya, misalnya:

>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'

Perhatikan bahwa kami menyertakan mulai dari potongan, tetapi kami hanya naik ke, dan tidak termasuk, berhenti.

Kapan langkahnya None, secara default menggunakan slice 1 untuk langkahnya. Jika Anda melangkah dengan bilangan bulat negatif, Python cukup pintar untuk pergi dari ujung ke awal.

>>> myString[::-1]
'0987654321'

Saya menjelaskan notasi slice dengan sangat rinci di jawaban saya untuk Menjelaskan pertanyaan notasi slice. 


12
2018-06-23 21:53



Anda sudah mendapatkannya di sana kecuali untuk "akhir". Ini disebut notasi slice. Contoh Anda harus membaca:

new_sub_string = myString[2:]

Jika Anda meninggalkan parameter kedua secara implisit akhir dari string.


7
2018-03-19 17:31