Bagaimana saya bisa memeriksa apakah string memiliki beberapa karakter spesifik di dalamnya menggunakan Python 2?
Misalnya, diberikan string berikut:
Para penjahat mencuri perhiasan senilai $ 1.000.000.
Bagaimana saya mendeteksi jika ada tanda dolar ("$"), koma (","), dan angka?
not set(p).isdisjoint(set("0123456789$,"))
manap
string untuk menguji.Jawaban:
Dengan asumsi string Anda adalah
s
:Dan seterusnya untuk karakter lain.
... atau
... atau
[Sunting: menambahkan
'$' in s
jawaban]sumber
s.find('$')!=-1
=>'$' in s
:-)any()
. Apakah ada cara untuk merujuk ke karakter yang ditemukanc
dalam gaya pythonic (sepertinya hanya dibatasi di dalamnyaany()
), atau akankah saya perlu membuat pencarian untuk beberapa karakter lebih eksplisit?r'[\d\$,]'
sehingga cocok dengan salah satu karakter tersebut, dan yangelse:
hilang pada titik dua di ujungnya.pengguna Jochen Ritzel mengatakan ini dalam komentar untuk jawaban atas pertanyaan ini dari pengguna dappawit. Itu harus bekerja:
'1', '2', dll. Harus diganti dengan karakter yang Anda cari.
Lihat halaman ini dalam dokumentasi Python 2.7 untuk beberapa informasi tentang string, termasuk tentang penggunaan
in
operator untuk pengujian substring.Pembaruan: Ini melakukan pekerjaan yang sama dengan saran saya di atas dengan pengulangan yang lebih sedikit:
sumber
Perbandingan cepat waktu dalam menanggapi posting oleh Abbafei:
Keluaran:
Jadi kodenya lebih kompak dengan apa saja, tetapi lebih cepat dengan kondisional.
EDIT: TL; DR - Untuk string panjang, jika-maka masih jauh lebih cepat daripada yang lainnya!
Saya memutuskan untuk membandingkan waktu untuk string acak panjang berdasarkan pada beberapa poin valid yang muncul dalam komentar:
Keluaran:
Jika-maka hampir urutan besarnya lebih cepat daripada yang lain!
sumber
phrase
string dengan huruf dari A ke Z dan saya ingin mencetak huruf mana yang tidak hadir dalam string yang akanany()
lebih baik? atau adakah cara pendek untuk memeriksa?Ini akan menguji apakah string terdiri dari beberapa kombinasi atau digit, tanda dolar, dan koma. Itukah yang kamu cari?
sumber
'testing $tring'
, yang menurut saya bukan sesuatu yang OP inginkan untuk terjadi.'testing $tring'
jikamatch
metode ini digunakan, hanya jikasearch
digunakan. Jadi saya pikir kodenya baik-baik saja.'$string'
meskipunlain:
cetak ("Karakter Khusus Non Space")
sumber