Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menggantikan Berbilang Aksara dengan Cekap dalam Rentetan?
Soalan Asal:
Bagaimanakah saya boleh menggantikan berbilang aksara dalam rentetan dengan cekap, seperti & -> &, # -> #, dsb.?
Sementara kod yang disediakan berfungsi, ia melibatkan beberapa penggantian berurutan, yang mungkin tidak cekap.
strs = strs.replace('&', '\&') strs = strs.replace('#', '\#') ...
Pendekatan yang lebih cekap ialah merantai bersama penggantian.
text.replace('&', '\&').replace('#', '\#')
Ujian: Gantikan aksara & dan # dalam rentetan abc&def#ghi.
Method | Time (μs per loop) |
---|---|
Chaining replacements | 0.814 |
Pelbagai kaedah lain tersedia untuk menggantikan aksara dalam rentetan:
import re rx = re.compile('([&#])') text = rx.sub(r'\', text)
def mk_esc(esc_chars): return lambda s: ''.join(['\' + c if c in esc_chars else c for c in s]) esc = mk_esc('&#') text = esc(text)
chars = "&#" for c in chars: text = text.replace(c, "\" + c)
Daripada menyemak kewujudan setiap aksara dalam rentetan input, gunakan lelaran untuk menggelungkan aksara yang akan diganti. Ini boleh meningkatkan prestasi dengan ketara.
Python 3 mengatasi Python 2 dalam tugas penggantian aksara kerana keupayaan manipulasi rentetan yang lebih pantas.
Atas ialah kandungan terperinci Bagaimana untuk Menggantikan Berbilang Aksara dengan Cekap dalam Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!