Apa cara paling sederhana untuk menghitung jumlah kemunculan karakter dalam sebuah string?
mis. hitung berapa kali 'a'
muncul di'Mary had a little lamb'
str.count (sub [, mulai [, akhir]])
Mengembalikan jumlah kejadian substring yang tidak tumpang tindih
sub
dalam kisaran[start, end]
. Argumen opsionalstart
danend
ditafsirkan sebagai notasi slice.
>>> sentence = 'Mary had a little lamb'
>>> sentence.count('a')
4
Seperti jawaban lain mengatakan, menggunakan metode string menghitung () mungkin yang paling sederhana, tetapi jika Anda sering melakukan ini, periksa koleksi. Penghitung :
from collections import Counter
my_str = "Mary had a little lamb"
counter = Counter(my_str)
print counter['a']
Ekspresi reguler mungkin?
sumber
len(re.findall('1',bin(10)))
info lebih lanjut di sini
sumber
Python-3.x:
sumber
str.count(a)
adalah solusi terbaik untuk menghitung satu karakter dalam sebuah string. Tetapi jika Anda perlu menghitung lebih banyak karakter, Anda harus membaca seluruh string sebanyak karakter yang ingin Anda hitung.Pendekatan yang lebih baik untuk pekerjaan ini adalah:
Jadi, Anda akan memiliki dict yang mengembalikan jumlah kemunculan setiap huruf dalam string dan
0
jika tidak ada.Untuk penghitung case yang tidak sensitif, Anda bisa mengganti metode mutator dan accessor dengan mensubklasing
defaultdict
(yang kelas dasar hanya baca):sumber
Counter
, yang sudah merupakan kelas dicollections
.Counter
adalah kelas Python murni lebih membengkak dandefaultdict
's__missing__
adalah ditulis dalam C . Untuk tugas sederhana seperti ini (int
juga diimplementasikan dalam C) pendekatan ini lebih cepat.Fungsi yang mudah dan lurus ini dapat membantu:
sumber
str
. Jika Anda memberikan namanya ke variabel,str
bukan tipe bawaan lagi. Anda juga menghitung empat belas b empat belas kali. Anda dapat menghindarinya hanya dengan menggantifor c in text
denganfor c in set(text)
.Ekspresi reguler sangat berguna jika Anda ingin case-insensitivity (dan tentu saja semua kekuatan regex).
Perlu diketahui bahwa versi regex membutuhkan urutan sepuluh kali lebih lama untuk dijalankan, yang kemungkinan akan menjadi masalah hanya jika my_string sangat panjang, atau kodenya berada di dalam loop yang dalam.
sumber
sumber
sumber
Cara alternatif untuk mendapatkan semua jumlah karakter tanpa menggunakan
Counter()
,count
dan regexsumber
count
jelas merupakan cara yang paling ringkas dan efisien untuk menghitung kemunculan karakter dalam sebuah string, tetapi saya mencoba mencari solusi menggunakanlambda
, sesuatu seperti ini:Ini akan menghasilkan:
Juga, ada satu keuntungan lagi untuk ini adalah jika kalimat adalah daftar sub-string yang berisi karakter yang sama seperti di atas, maka ini juga memberikan hasil yang benar karena penggunaan
in
. Lihat:Ini juga menghasilkan:
Tapi Tentu saja ini hanya akan berfungsi ketika memeriksa kemunculan karakter tunggal seperti
'a'
dalam kasus khusus ini.sumber
Metode "Tanpa menggunakan hitungan untuk menemukan karakter yang Anda inginkan dalam string".
sumber
Saya penggemar perpustakaan panda, khususnya
value_counts()
metodenya. Anda bisa menggunakannya untuk menghitung kemunculan setiap karakter di string Anda:sumber
sumber
Ada dua cara untuk mencapai ini:
1) Dengan jumlah fungsi bawaan ()
2) Tanpa menggunakan fungsi
sumber
Tidak lebih dari IMHO ini - Anda dapat menambahkan metode atas atau bawah
sumber