Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Menggantikan Berbilang Aksara dengan Cekap dalam Rentetan?

Bagaimana untuk Menggantikan Berbilang Aksara dengan Cekap dalam Rentetan?

DDD
Lepaskan: 2024-12-02 02:52:10
asal
1053 orang telah melayarinya

How to Efficiently Replace Multiple Characters in a String?

Kaedah Terbaik untuk Menggantikan Berbilang Aksara dalam Rentetan

Soalan Asal:
Bagaimanakah saya boleh menggantikan berbilang aksara dalam rentetan dengan cekap, seperti & -> &, # -> #, dsb.?

Pendekatan Pertama (Penggantian Berurutan)

Sementara kod yang disediakan berfungsi, ia melibatkan beberapa penggantian berurutan, yang mungkin tidak cekap.

strs = strs.replace('&', '\&')
strs = strs.replace('#', '\#')
...
Salin selepas log masuk

Kedua Pendekatan (Penggantian Rantaian)

Pendekatan yang lebih cekap ialah merantai bersama penggantian.

text.replace('&', '\&').replace('#', '\#')
Salin selepas log masuk

Perbandingan Prestasi

Ujian: Gantikan aksara & dan # dalam rentetan abc&def#ghi.

Method Time (μs per loop)
Chaining replacements 0.814

Alternatif Kaedah

Pelbagai kaedah lain tersedia untuk menggantikan aksara dalam rentetan:

Menggunakan Regex

import re

rx = re.compile('([&#])')
text = rx.sub(r'\', text)
Salin selepas log masuk

Menggunakan Fungsi Melarikan Diri Tersuai

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)
Salin selepas log masuk

Menggunakan Gelung

chars = "&#"
for c in chars:
    text = text.replace(c, "\" + c)
Salin selepas log masuk

Petua Tambahan

Optimumkan untuk Kelajuan (~2x Penambahbaikan)

Daripada menyemak kewujudan setiap aksara dalam rentetan input, gunakan lelaran untuk menggelungkan aksara yang akan diganti. Ini boleh meningkatkan prestasi dengan ketara.

Gunakan Python 3

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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan