Saya ingin menghapus karakter dalam string dengan python:
string.replace(',', '').replace("!", '').replace(":", '').replace(";", '')...
Tapi saya punya banyak karakter yang harus saya hapus. Saya memikirkan daftar
list = [',', '!', '.', ';'...]
Tetapi bagaimana saya bisa menggunakan list
untuk mengganti karakter di string
?
Jawaban:
Jika Anda menggunakan python2 dan input Anda berupa string (bukan unicodes), metode yang terbaik adalah
str.translate
:Jika tidak, ada opsi berikut untuk dipertimbangkan:
A. Iterasi char subjek dengan char, hilangkan karakter yang tidak diinginkan dan
join
daftar yang dihasilkan:(Perhatikan bahwa versi generator
''.join(c for c ...)
akan kurang efisien).B. Buat ekspresi reguler dengan cepat dan
re.sub
dengan string kosong:(
re.escape
memastikan bahwa karakter suka^
atau]
tidak akan merusak ekspresi reguler).C. Gunakan varian pemetaan
translate
:Kode pengujian lengkap dan timing:
Hasil:
(Sebagai catatan, angka untuk
remove_chars_translate_bytes
mungkin memberi kita petunjuk mengapa industri enggan mengadopsi Unicode untuk waktu yang lama).sumber
TypeError: translate() takes exactly one argument (2 given)
. Tampaknya dibutuhkan dikt sebagai argumen.Anda bisa menggunakan
str.translate()
:Contoh:
sumber
s.translate(dict.fromkeys(map(ord, u",!.;")))
unicode.translate()
Metode ini memiliki parameter yang berbeda daristr.translate()
metode ini. Gunakan varian dalam komentar di atas untuk objek Unicode.Anda dapat menggunakan metode terjemahan .
sumber
sumber
Jika Anda menggunakan python3 dan mencari
translate
solusinya - fungsi berubah dan sekarang mengambil 1 parameter, bukan 2.Parameter itu adalah sebuah tabel (bisa berupa kamus) di mana setiap kunci adalah ordinal Unicode (int) dari karakter yang akan ditemukan dan nilainya adalah penggantian (dapat berupa Unicode ordinal atau string untuk memetakan kunci ke).
Ini adalah contoh penggunaan:
sumber
Pendekatan lain menggunakan regex:
sumber
Kenapa bukan loop sederhana?
Juga, hindari penamaan daftar 'daftar'. Ini mengesampingkan fungsi bawaan
list
.sumber
Anda bisa menggunakan sesuatu seperti ini
Kode ini bukan milik saya dan berasal dari sini artikel yang bagus dan dibahas secara mendalam
sumber
Juga topik menarik tentang penghapusan aksen UTF-8 dari string yang mengubah char menjadi char standar yang tidak menonjolkan:
Apa cara terbaik untuk menghilangkan aksen dalam string unicode python?
ekstrak kode dari topik:
sumber
Mungkin cara yang lebih modern dan fungsional untuk mencapai apa yang Anda inginkan:
harap dicatat bahwa untuk tujuan khusus ini cukup sulit, tetapi sekali Anda membutuhkan kondisi yang lebih kompleks, filter menjadi berguna
sumber
cara sederhana,
keluaran:
this-is-string--foo----bar--tuna---sandwich--is---good
sumber
Bagaimana dengan ini - satu liner.
sumber
Saya pikir ini cukup sederhana dan akan dilakukan!
ini adalah salah satu cara untuk melakukannya. Tetapi jika Anda bosan menyimpan daftar karakter yang ingin Anda hapus, Anda sebenarnya dapat melakukannya dengan menggunakan nomor urut string yang Anda ulangi. nomor pesanan adalah nilai ascii dari karakter itu. angka ascii untuk 0 sebagai char adalah 48 dan angka ascii untuk huruf kecil z adalah 122 jadi:
sumber
Hari-hari ini saya terjun ke skema, dan sekarang saya pikir saya baik dalam pengulangan dan eval. HA HA HA. Bagikan saja beberapa cara baru:
pertama, eval it
kedua, ulangi saja
Hei, jangan downvote. Saya hanya ingin berbagi ide baru.
sumber
Saya sedang memikirkan solusi untuk ini. Pertama saya akan membuat input string sebagai daftar. Maka saya akan mengganti item daftar. Kemudian dengan menggunakan perintah join, saya akan mengembalikan daftar sebagai string. Kode bisa seperti ini:
Ini akan menghapus apa pun dari string. Apa pendapatmu tentang itu?
sumber
Berikut ini
more_itertools
pendekatannya:Di sini kami membagi berdasarkan item yang ditemukan di
blacklist
, ratakan hasilnya dan bergabung dengan string.sumber
Python 3, implementasi pemahaman daftar baris tunggal.
sumber
Hapus *%, & @! dari string di bawah ini:
sumber