Mengalih keluar tanda baca daripada rentetan ialah tugas biasa dalam banyak senario pengaturcaraan. Walaupun pelbagai kaedah wujud, memilih kaedah yang paling cekap boleh menjadi mencabar.
Untuk kecekapan maksimum, terjemahan rentetan berkuasa. Menggunakan s.translate(None, string.punctuation) memastikan operasi rentetan mentah dilakukan dalam C, memberikan kelajuan yang tiada tandingan. Untuk Python versi 3.9 dan ke atas, manfaatkan s.translate(str.maketrans('', '', string.punctuation)).
Jika kelajuan bukanlah perkara utama, pertimbangkan alternatif ini:
Untuk mengukur prestasi kaedah ini, kod berikut ialah dilaksanakan:
import re, string, timeit s = "string. With. Punctuation" exclude = set(string.punctuation) table = string.maketrans("","") regex = re.compile('[%s]' % re.escape(string.punctuation)) def test_set(s): return ''.join(ch for ch in s if ch not in exclude) def test_re(s): return regex.sub('', s) def test_trans(s): return s.translate(table, string.punctuation) def test_repl(s): for c in string.punctuation: s=s.replace(c,"") return s print "sets :",timeit.Timer('f(s)', 'from __main__ import s,test_set as f').timeit(1000000) print "regex :",timeit.Timer('f(s)', 'from __main__ import s,test_re as f').timeit(1000000) print "translate :",timeit.Timer('f(s)', 'from __main__ import s,test_trans as f').timeit(1000000) print "replace :",timeit.Timer('f(s)', 'from __main__ import s,test_repl as f').timeit(1000000)
Hasilnya mendedahkan perkara berikut:
Apabila mengoptimumkan kelajuan, terjemahan rentetan adalah pilihan yang tidak dipertikaikan. Untuk senario kurang intensif prestasi, pendekatan alternatif seperti pengecualian set atau ungkapan biasa boleh memberikan hasil yang memuaskan.
Atas ialah kandungan terperinci Apakah Cara Paling Cekap untuk Mengeluarkan Tanda Baca daripada Rentetan dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!