Saya ingin mengganti spasi dengan garis bawah dalam string untuk membuat URL yang bagus. Jadi misalnya:
"This should be connected" becomes "This_should_be_connected"
Saya menggunakan Python dengan Django. Bisakah ini diselesaikan dengan menggunakan ekspresi reguler?
slugify
tidak memberikan output yang diinginkan.Jawaban:
Anda tidak perlu ekspresi reguler. Python memiliki metode string bawaan yang melakukan apa yang Anda butuhkan:
sumber
Mengganti spasi baik-baik saja, tetapi saya mungkin menyarankan untuk sedikit lebih jauh menangani karakter URL-bermusuhan lainnya seperti tanda tanya, apostrof, poin seru, dll.
Perhatikan juga bahwa konsensus umum di antara para pakar SEO adalah bahwa tanda hubung lebih disukai daripada garis bawah pada URL.
sumber
Django memiliki fungsi 'slugify' yang melakukan hal ini, serta optimisasi ramah URL lainnya. Tersembunyi di modul defaultfilters.
Ini bukan output yang Anda minta, tetapi IMO lebih baik untuk digunakan dalam URL.
sumber
Ini memperhitungkan karakter kosong akun selain spasi dan saya pikir ini lebih cepat daripada menggunakan
re
modul:sumber
\x8f
)Menggunakan
re
modul:Kecuali jika Anda memiliki beberapa ruang atau kemungkinan spasi putih seperti di atas, Anda mungkin hanya ingin menggunakan
string.replace
seperti yang disarankan orang lain.sumber
gunakan metode ganti string:
"this should be connected".replace(" ", "_")
"this_should_be_disconnected".replace("_", " ")
sumber
Anehnya perpustakaan ini belum disebutkan
Paket python bernama python-slugify, yang melakukan pekerjaan slugifying dengan cukup baik:
Bekerja seperti ini:
sumber
Saya menggunakan potongan kode berikut untuk url ramah saya:
Ini berfungsi dengan baik dengan karakter unicode juga.
sumber
Python memiliki metode bawaan pada string yang disebut replace yang digunakan sebagai berikut:
Jadi, Anda akan menggunakan:
Saya punya masalah ini beberapa waktu yang lalu dan saya menulis kode untuk mengganti karakter dalam sebuah string. Saya harus mulai mengingat untuk memeriksa dokumentasi python karena mereka memiliki fungsi bawaan untuk semuanya.
sumber
OP menggunakan python, tetapi dalam javascript (sesuatu yang harus diperhatikan karena sintaksinya mirip.
sumber
jika Anda menetapkan nilai ini ke variabel apa pun, itu akan berfungsi
secara default mystring tidak akan memiliki ini
sumber
Anda dapat mencoba ini sebagai gantinya:
sumber
Cocokkan dan ganti ruang> garis bawah semua file dalam direktori saat ini
sumber