Melucutkan Aksara Tidak Boleh Cetak daripada Rentetan dalam Python
Dalam Perl, s/[^[:print:]]// g regex secara berkesan mengalih keluar semua aksara yang tidak boleh dicetak daripada rentetan. Walau bagaimanapun, dalam Python, tiada kelas regex POSIX yang setara, menyebabkan sesetengah orang tertanya-tanya bagaimana untuk mencapai tugas yang sama.
Memahami Unicode
Cabarannya terletak pada pengendalian aksara Unicode , kerana kaedah string.printable mungkin menanggalkannya secara tidak sengaja.
Membina Kelas Aksara Tersuai
Untuk menangani perkara ini, kami boleh membina kelas aksara tersuai menggunakan unicodedata modul. Fungsi unicodedata.category() menyediakan cerapan ke dalam kategori aksara. Contohnya, kita boleh mentakrifkan kelas aksara yang dipanggil control_characters untuk mewakili aksara yang tidak boleh dicetak seperti aksara kawalan dan aksara pengganti dengan menapis kategori tersebut daripada set aksara Unicode.
<code class="python">import unicodedata import re categories = {'Cc', 'Cf', 'Cs'} # Include desired categories here control_chars = ''.join(chr(i) for i in range(sys.maxunicode) if unicodedata.category(chr(i)) in categories) control_char_re = re.compile('[%s]' % re.escape(control_chars))</code>
Pendekatan ini menawarkan kecekapan yang lebih baik berbanding dengan lelaran atas rentetan.
<code class="python">def remove_control_chars(s): return control_char_re.sub('', s)</code>
Penyesuaian Tambahan
Untuk senario yang menapis kategori tambahan (cth., aksara penggunaan persendirian) diperlukan, anda boleh mengembangkan kelas aksara sewajarnya.
<code class="python">categories.add('Co') # Add private-use characters # Rebuild the character class and regex</code>
Dengan menggunakan pendekatan ini, anda boleh menanggalkan aksara tidak boleh cetak secara berkesan daripada rentetan Unicode dalam Python, memenuhi kedua-dua kes penggunaan asas dan tersuai.
Atas ialah kandungan terperinci Bagaimana untuk Menghapuskan Aksara Tidak Boleh Cetak daripada Rentetan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!