41 pertanyaan manipulasi string dengan Python

Saya mulai membuat daftar fungsi yang paling sering digunakan, menyelesaikan masalah algoritme di LeetCode dan HackerRank.

Menjadi programmer yang baik tidak berarti mengingat semua fungsi bawaan dari bahasa tertentu. Tetapi ini tidak berarti bahwa hafalan mereka tidak berguna. Terutama - ketika datang untuk mempersiapkan wawancara.

Hari ini saya ingin berbagi dengan semua orang yang menginginkan lembar contekan saya untuk bekerja dengan string dengan Python. Saya mendesainnya sebagai daftar pertanyaan, yang saya gunakan untuk pengujian diri. Meskipun pertanyaan-pertanyaan ini tidak mengarah pada tugas penuh yang ditawarkan pada wawancara, pengembangannya akan membantu Anda dalam memecahkan masalah pemrograman yang sebenarnya.



1. Bagaimana cara memeriksa dua objek untuk identitas?


Operator iskembali Truejika referensi ke area memori yang sama ditulis dalam dua variabel. Inilah yang sedang kita bicarakan ketika berbicara tentang "identitas objek".

Jangan bingung isdan ==. Operator ==hanya memeriksa persamaan objek.

animals           = ['python','gopher']
more_animals      = animals
print(animals == more_animals) #=> True
print(animals is more_animals) #=> True
even_more_animals = ['python','gopher']
print(animals == even_more_animals) #=> True
print(animals is even_more_animals) #=> False

Perhatikan fakta bahwa animalsmereka even_more_animalstidak identik, meskipun mereka sama satu sama lain.

Selain itu, ada fungsi id()yang mengembalikan pengidentifikasi alamat memori yang terkait dengan nama variabel. Ketika fungsi ini dipanggil, pengidentifikasi yang sama akan dikembalikan untuk dua objek yang identik.

name = 'object'
id(name)
#=> 4408718312

2. Bagaimana cara memeriksa bahwa setiap kata dalam satu baris dimulai dengan huruf kapital?


Ada metode string istitle()yang memeriksa apakah setiap kata dalam string dimulai dengan huruf kapital.

print( 'The Hilton'.istitle() ) #=> True
print( 'The dog'.istitle() ) #=> False
print( 'sticky rice'.istitle() ) #=> False

3. Bagaimana cara memeriksa string untuk string lain di dalamnya?


Ada pernyataan inyang akan kembali Truejika string berisi string pencarian.

print( 'plane' in 'The worlds fastest plane' ) #=> True
print( 'car' in 'The worlds fastest plane' ) #=> False

4. Bagaimana menemukan indeks kemunculan substring pertama dalam string?


Ada dua metode yang mengembalikan indeks kemunculan pertama sebuah substring dalam string. Ini find()dan index(). Masing-masing memiliki fitur tertentu.

Metode find()kembali -1jika substring yang diperlukan dalam string tidak ditemukan.

'The worlds fastest plane'.find('plane') #=> 19
'The worlds fastest plane'.find('car') #=> -1

Metode index()dalam situasi seperti itu melempar kesalahan ValueError.

'The worlds fastest plane'.index('plane') #=> 19
'The worlds fastest plane'.index('car') #=> ValueError: substring not found

5. Bagaimana cara menghitung jumlah karakter dalam suatu string?


Fungsi len()mengembalikan panjang string.

len('The first president of the organization..') #=> 41

6. Bagaimana cara menghitung berapa kali karakter tertentu muncul dalam sebuah string?


Metode count()yang mengembalikan jumlah kemunculan dalam string karakter yang ditentukan akan membantu kami menjawab pertanyaan ini .

'The first president of the organization..'.count('o') #=> 3

7. Bagaimana membuat karakter pertama dari string menjadi huruf besar?


Untuk melakukan ini, Anda dapat menggunakan metode ini capitalize().

'florida dolphins'.capitalize() #=> 'Florida dolphins'

8. Apa itu f-line dan bagaimana menggunakannya?


Python 3.6 memperkenalkan fitur baru, yang disebut "f-string." Penggunaannya sangat menyederhanakan interpolasi string. Menggunakan f-line mengingatkan pada suatu metode format().

Ketika f-lines dideklarasikan, sebuah surat ditulis sebelum tanda kutip pembuka f.

name = 'Chris'
food = 'creme brulee'
f'Hello. My name is {name} and I like {food}.'
#=> 'Hello. My name is Chris and I like creme brulee'

9. Bagaimana menemukan substring di bagian string yang diberikan?


Metode index()ini dapat dipanggil dengan meneruskan argumen opsional ke dalamnya, mewakili indeks fragmen awal dan akhir dari string, di mana Anda perlu mencari substring.

'the happiest person in the whole wide world.'.index('the',10,44)
#=> 23

Perhatikan fakta bahwa konstruksi di atas kembali 23, dan tidak 0, seolah-olah, tidak akan membatasi pencarian kami.

'the happiest person in the whole wide world.'.index('the')
#=> 0

10. Bagaimana cara memasukkan konten variabel ke dalam string menggunakan metode format ()?


Metode ini format()memungkinkan Anda untuk mencapai hasil yang serupa dengan yang dapat diperoleh menggunakan f-line. Benar, saya percaya bahwa itu format()tidak nyaman untuk digunakan, karena semua variabel harus ditentukan sebagai argumen format().

difficulty = 'easy'
thing = 'exam'
'That {} was {}!'.format(thing, difficulty)
#=> 'That exam was easy!'

11. Bagaimana saya tahu jika string hanya berisi angka?


Ada metode isnumeric()yang mengembalikan Truejika semua karakter dalam string adalah angka.

'80000'.isnumeric() #=> True

Dengan menggunakan metode ini, perlu diingat bahwa ia tidak menghitung tanda baca sebagai angka.

'1.0'.isnumeric() #=> False

12. Bagaimana cara membagi string dengan karakter yang diberikan?


Di sini kita akan dibantu oleh metode split()yang memecah string oleh karakter yang diberikan atau oleh beberapa karakter.

'This is great'.split(' ')
#=> ['This', 'is', 'great']
'not--so--great'.split('--')
#=> ['not', 'so', 'great']

13. Bagaimana cara memeriksa string yang hanya terdiri dari huruf kecil?


Metode islower()mengembalikan Truehanya jika string hanya terdiri dari huruf kecil.

'all lower case'.islower() #=> True
'not aLL lowercase'.islower() # False

14. Bagaimana cara memeriksa apakah string dimulai dengan huruf kecil?


Ini dapat dilakukan dengan memanggil metode di atas islower()untuk karakter pertama dari string.

'aPPLE'[0].islower() #=> True

15. Apakah mungkin dengan Python untuk menambahkan integer ke string?


Ini dimungkinkan dalam beberapa bahasa, tetapi Python akan membuat kesalahan ketika mencoba melakukan operasi yang sama TypeError.

'Ten' + 10 #=> TypeError

16. Bagaimana cara "membalik" garis?


Untuk “membalik” suatu garis, ia dapat dipisah dengan menyajikannya sebagai daftar karakter, “membalik” daftar, dan, menggabungkan elemen-elemennya, membentuk garis baru.

''.join(reversed("hello world"))
#=> 'dlrow olleh'

17. Bagaimana cara menggabungkan daftar garis menjadi satu garis, yang unsur-unsurnya dipisahkan oleh tanda hubung?


Metode ini join()dapat menggabungkan item daftar ke dalam string, memisahkan string individu menggunakan karakter yang ditentukan.

'-'.join(['a','b','c'])
#=> 'a-b-c'

18. Bagaimana saya tahu bahwa semua karakter dalam string berada di ASCII?


Metode isascii()kembali Truejika semua karakter dalam string berada di ASCII.

print( 'Ă‚'.isascii() ) #=> False
print( 'A'.isascii() ) #=> True

19. Bagaimana cara melemparkan seluruh string ke huruf besar atau kecil?


Untuk mengatasi masalah ini, Anda dapat menggunakan metode upper()dan lower(), yang, masing-masing, mengarahkan semua karakter string ke huruf besar dan kecil.

sentence = 'The Cat in the Hat'
sentence.upper() #=> 'THE CAT IN THE HAT'
sentence.lower() #=> 'the cat in the hat'

20. Bagaimana cara mengubah karakter pertama dan terakhir dari string menjadi huruf besar?


Di sini, seperti dalam salah satu contoh sebelumnya, kita akan merujuk ke karakter string oleh indeks. Garis dalam Python tidak dapat diubah, jadi kami akan membangun baris baru berdasarkan yang sudah ada.

animal = 'fish'
animal[0].upper() + animal[1:-1] + animal[-1].upper()
#=> 'FisH'

21. Bagaimana cara memeriksa string yang hanya terdiri dari huruf kapital?


Ada metode isupper()yang mirip dengan yang sudah dipertimbangkan islower(). Tetapi isupper()mengembalikan Truehanya jika seluruh string terdiri dari huruf besar.

'Toronto'.isupper() #=> False
'TORONTO'.isupper() #= True

22. Dalam situasi apa Anda akan menggunakan metode splitlines ()?


Metode ini splitlines()memisahkan string dengan karakter break line.

sentence = "It was a stormy night\nThe house creeked\nThe wind blew."
sentence.splitlines()
#=> ['It was a stormy night', 'The house creeked', 'The wind blew.']

23. Bagaimana cara mendapatkan potongan garis?


Untuk mendapatkan sepotong string, sintaks berikut digunakan:

string[start_index:end_index:step]

Berikut stepadalah langkah yang akan mengembalikan karakter string dari rentang start_index:end_index. Sebuah stepnilai 3 menunjukkan bahwa setiap karakter ketiga akan dikembalikan.

string = 'I like to eat apples'
string[:6] #=> 'I like'
string[7:13] #=> 'to eat'
string[0:-1:2] #=> 'Ilk oetape' ( 2- )

24. Bagaimana cara mengubah integer ke string?


Anda dapat menggunakan konstruktor untuk mengonversi angka menjadi string str().

str(5) #=> '5'

25. Bagaimana saya tahu bahwa string hanya berisi karakter alfabet?


Metode ini isalpha()kembali Truejika semua karakter dalam string adalah huruf.

'One1'.isalpha() #=> False
'One'.isalpha() #=> True

26. Bagaimana cara mengganti semua kemunculan substring tertentu dalam garis yang diberikan?


Jika Anda melakukannya tanpa mengekspor modul yang memungkinkan Anda bekerja dengan ekspresi reguler, Anda bisa menggunakan metode ini untuk menyelesaikan masalah ini replace().

sentence = 'Sally sells sea shells by the sea shore'
sentence.replace('sea', 'mountain')
#=> 'Sally sells mountain shells by the mountain shore'

27. Bagaimana cara mengembalikan karakter garis dengan kode ASCII minimum?


Jika Anda melihat kode ASCII elemen, ternyata, misalnya, huruf besar memiliki kode lebih rendah daripada huruf kecil. Fungsi min()mengembalikan karakter string yang memiliki kode terkecil.

min('strings') #=> 'g'

28. Bagaimana cara memeriksa string yang hanya berisi karakter alfanumerik?


Karakter alfanumerik termasuk huruf dan angka. Untuk menjawab pertanyaan ini, Anda dapat menggunakan metode ini isalnum().

'Ten10'.isalnum() #=> True
'Ten10.'.isalnum() #=> False

29. Bagaimana cara menghapus spasi dari awal garis (dari sisi kiri), dari ujungnya (dari sisi kanan), atau di kedua sisi garis?


Di sini, metode lstrip(), rstrip()dan , masing-masing, berguna bagi kita strip().

string = '  string of whitespace    '
string.lstrip() #=> 'string of whitespace    '
string.rstrip() #=> '  string of whitespace'
string.strip() #=> 'string of whitespace'

30. Bagaimana memeriksa apakah suatu string dimulai dengan urutan karakter tertentu, atau diakhiri dengan urutan karakter tertentu?


Untuk menjawab pertanyaan ini, Anda dapat menggunakan metode startswith()dan masing-masing endswith().

city = 'New York'
city.startswith('New') #=> True
city.endswith('N') #=> False

31. Bagaimana cara menyandikan string di ASCII?


Metode ini encode()memungkinkan Anda untuk menyandikan string menggunakan penyandian yang ditentukan. Pengkodean standar digunakan utf-8. Jika karakter tertentu tidak dapat diwakili menggunakan pengkodean yang ditentukan, kesalahan akan dihasilkan UnicodeEncodeError.

'Fresh Tuna'.encode('ascii')
#=> b'Fresh Tuna'
'Fresh Tuna Ă‚'.encode('ascii')
#=> UnicodeEncodeError: 'ascii' codec can't encode character '\xc2' in position 11: ordinal not in range(128)

32. Bagaimana saya tahu bahwa string hanya menyertakan spasi?


Ada metode isspace()yang mengembalikan Truehanya jika string hanya terdiri dari spasi.

''.isspace() #=> False
' '.isspace() #=> True
'   '.isspace() #=> True
' the '.isspace() #=> False

33. Apa yang terjadi jika Anda mengalikan satu baris dengan 3?


Baris baru akan dibuat, mewakili baris asli yang diulang tiga kali.

'dog' * 3
# 'dogdogdog'

34. Bagaimana cara membuat karakter pertama dari setiap kata dalam string huruf besar?


Ada metode title()yang huruf besar huruf pertama dari setiap kata dalam sebuah string.

'once upon a time'.title() #=> 'Once Upon A Time'

35. Bagaimana cara menggabungkan dua garis?


Anda dapat menggunakan operator untuk menggabungkan string +.

'string one' + ' ' + 'string two' 
#=> 'string one string two'

36. Bagaimana cara menggunakan metode partisi ()?


Metode ini partition()memecah string oleh substring yang diberikan. Setelah itu, hasilnya dikembalikan sebagai tuple. Selain itu, substring di mana kerusakan dilakukan juga termasuk dalam tuple.

sentence = "If you want to be a ninja"
print(sentence.partition(' want '))
#=> ('If you', ' want ', 'to be a ninja')

37. Garis dalam Python tidak dapat diubah. Apa artinya?


Fakta bahwa string tidak dapat diubah menunjukkan bahwa setelah objek string dibuat, itu tidak dapat diubah. Saat "memodifikasi" string, string asli tidak berubah. Sebaliknya, objek yang sama sekali baru dibuat dalam memori. Anda dapat membuktikan ini menggunakan fungsi id().

proverb = 'Rise each day before the sun'
print( id(proverb) )
#=> 4441962336
proverb_two = 'Rise each day before the sun' + ' if its a weekday'
print( id(proverb_two) )
#=> 4442287440

Ketika menyatukan 'Rise each day before the sun'dan ' if its a weekday'dalam memori, objek baru dibuat dengan pengidentifikasi baru. Jika objek asli diubah, maka objek akan memiliki pengidentifikasi yang sama.

38. Jika Anda mendeklarasikan baris yang sama dua kali (menuliskannya ke dalam 2 variabel berbeda) - berapa banyak objek yang akan dibuat dalam memori? 1 atau 2?


Contoh pekerjaan tersebut dengan string adalah fragmen kode berikut:

animal = 'dog'
pet = 'dog'

Dengan pendekatan ini, hanya satu objek yang dibuat dalam memori. Ketika saya menemukan ini untuk pertama kalinya, sepertinya tidak intuitif bagi saya. Tetapi mekanisme ini membantu Python menghemat memori saat bekerja dengan string panjang.

Ini dapat dibuktikan dengan beralih ke suatu fungsi id().

animal = 'dog'
print( id(animal) )
#=> 4441985688
pet = 'dog'
print( id(pet) )
#=> 4441985688

39. Bagaimana cara menggunakan metode maketrans () dan translate ()?


Metode ini maketrans()memungkinkan Anda untuk menggambarkan pemetaan satu karakter ke yang lain, mengembalikan tabel konversi.

Metode ini translate()memungkinkan Anda untuk menerapkan tabel yang ditentukan untuk mengonversi string.

#  
mapping = str.maketrans("abcs", "123S")
#  
"abc are the first three letters".translate(mapping)
#=> '123 1re the firSt three letterS'

Harap dicatat bahwa bar terbuat dari penggantian simbol a, b, cdan s, masing-masing, simbol 1, 2, 3dan S.

40. Bagaimana cara menghapus vokal dari string?


Satu jawaban untuk pertanyaan ini adalah bahwa karakter dalam string diurutkan menggunakan mekanisme Pemahaman Daftar. Simbol diperiksa dengan membandingkan dengan vokal yang berisi tuple. Jika karakter tidak termasuk dalam tuple, karakter tersebut ditambahkan ke baris baru.

string = 'Hello 1 World 2'
vowels = ('a','e','i','o','u')
''.join([c for c in string if c not in vowels])
#=> 'Hll 1 Wrld 2'

41. Dalam situasi apa Anda menggunakan metode rfind ()?


Metode rfind()ini mirip dengan metode ini find(), tetapi, tidak seperti find(), metode ini memindai string bukan dari kiri ke kanan, tetapi dari kanan ke kiri, mengembalikan indeks kemunculan pertama yang ditemukan dari substring yang diinginkan.

story = 'The price is right said Bob. The price is right.'
story.rfind('is')
#=> 39

Ringkasan


Saya sering menjelaskan kepada satu manajer produk, seseorang yang berusia lanjut, bahwa pengembang bukan kamus yang menyimpan deskripsi metode objek. Tetapi semakin banyak metode yang diingat pengembang, semakin sedikit ia harus ke google, dan semakin cepat dan menyenangkan ia akan bekerja. Saya harap sekarang Anda dapat dengan mudah menjawab pertanyaan yang dibahas di sini.

Pembaca yang budiman! Bagaimana dengan penanganan string dengan Python, akankah Anda memberi saran kepada mereka yang bersiap untuk wawancara?


All Articles