Saya bekerja dengan Python v2, dan saya mencoba mencari tahu apakah Anda dapat mengetahui apakah sebuah kata ada dalam sebuah string.
Saya telah menemukan beberapa informasi tentang mengidentifikasi apakah kata itu di dalam string - menggunakan .find, tetapi apakah ada cara untuk melakukan pernyataan IF. Saya ingin memiliki yang seperti ini:
if string.find(word):
print 'success'
Terima kasih atas bantuannya.
tetapi perlu diingat bahwa ini cocok dengan urutan karakter, belum tentu seluruh kata - misalnya,
'word' in 'swordsmith'
Benar. Jika Anda hanya ingin mencocokkan seluruh kata, Anda harus menggunakan ekspresi reguler:sumber
Jika Anda ingin mengetahui apakah seluruh kata ada dalam daftar kata yang dipisahkan oleh ruang, cukup gunakan:
Metode elegan ini juga yang tercepat. Dibandingkan dengan pendekatan Hugh Bothwell dan DaSong:
Sunting: Sedikit variasi pada gagasan ini untuk Python 3.6+, sama cepatnya:
sumber
contains_word("says", "Simon says: Don't use this answer")
find mengembalikan integer yang menunjukkan indeks tempat item pencarian ditemukan. Jika tidak ditemukan, ia mengembalikan -1.
sumber
Anda dapat membagi string ke kata-kata dan memeriksa daftar hasil.
sumber
Fungsi kecil ini membandingkan semua kata pencarian dalam teks yang diberikan. Jika semua kata pencarian ditemukan dalam teks, mengembalikan panjang pencarian, atau
False
sebaliknya.Juga mendukung pencarian string unicode.
pemakaian:
sumber
Jika mencocokkan urutan karakter tidak cukup dan Anda perlu mencocokkan seluruh kata, berikut adalah fungsi sederhana yang menyelesaikan pekerjaan. Pada dasarnya menambahkan spasi di mana diperlukan dan mencari itu di string:
Ini mengasumsikan bahwa koma dan tanda baca lainnya telah dihapus.
sumber
Ketika Anda meminta kata dan bukan untuk string, saya ingin menyajikan solusi yang tidak sensitif terhadap awalan / sufiks dan mengabaikan case:
Jika kata-kata Anda mungkin berisi karakter khusus regex (seperti
+
), maka Anda perlure.escape(word)
sumber
Cara lanjutan untuk memeriksa kata yang tepat, yang perlu kita temukan dalam string panjang:
sumber
Menggunakan regex adalah solusi, tetapi terlalu rumit untuk kasus itu.
Anda cukup membagi teks menjadi daftar kata-kata. Gunakan metode split ( separator , num ) untuk itu. Ini mengembalikan daftar semua kata dalam string, menggunakan pemisah sebagai pemisah. Jika separator tidak ditentukan, ia terbagi di semua spasi putih (opsional Anda dapat membatasi jumlah pemisahan menjadi num ).
Ini tidak akan berfungsi untuk string dengan koma dll. Misalnya:
Jika Anda juga ingin membagi semua koma dll. Gunakan argumen pemisah seperti ini:
sumber
mystring.lower().split()
danword.lower()
saya pikir ini juga lebih cepat daripada contoh regex.Anda bisa menambahkan spasi sebelum dan sesudah "kata".
Dengan cara ini terlihat spasi sebelum dan sesudah "kata".
sumber