Bagaimana Anda mengganti karakter tertentu dalam sebuah string dengan python?

Jika Anda mencari cara untuk menghapus atau mengganti semua atau sebagian string dengan Python, tutorial ini cocok untuk Anda. Anda akan mengambil transkrip ruang obrolan fiktif dan membersihkannya menggunakan metode

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7 dan fungsi
>>> "Fake Python".replace("Fake", "Real")
'Real Python'
8

Dalam Python, metode

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7 dan fungsi
>>> "Fake Python".replace("Fake", "Real")
'Real Python'
8 sering digunakan untuk membersihkan teks dengan menghapus string atau substring atau menggantinya. Dalam tutorial ini, Anda akan berperan sebagai pengembang untuk perusahaan yang memberikan dukungan teknis melalui obrolan teks satu-ke-satu. Anda ditugasi membuat skrip yang akan membersihkan obrolan, menghapus data pribadi apa pun, dan mengganti kata-kata makian dengan emoji

Anda hanya diberi satu transkrip obrolan yang sangat singkat

[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
_

Meskipun transkrip ini pendek, ini tipikal jenis obrolan yang selalu dimiliki agen. Ini memiliki pengidentifikasi pengguna, stempel waktu ISO, dan pesan

Dalam hal ini, klien

>>> name = "Fake Python"
>>> name.replace("Fake", "Real")
'Real Python'

>>> name
'Fake Python'

>>> name = name.replace("Fake", "Real")
'Real Python'

>>> name
'Real Python'
_1 mengajukan keluhan, dan kebijakan perusahaan adalah membersihkan dan menyederhanakan transkrip, kemudian menyebarkannya untuk evaluasi independen. Membersihkan pesan adalah tugas Anda

Kode sampel. Klik di sini untuk mengunduh kode sampel gratis yang akan Anda gunakan untuk mengganti string dengan Python

Hal pertama yang ingin Anda lakukan adalah menangani kata-kata umpatan apa pun

Cara Menghapus atau Mengganti String atau Substring Python

Cara paling dasar untuk mengganti string dengan Python adalah dengan menggunakan metode string

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7

>>> ________0______

Seperti yang Anda lihat, Anda dapat merangkai

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
_7 ke string apa pun dan menyediakan metode dengan dua argumen. Yang pertama adalah string yang ingin Anda ganti, dan yang kedua adalah penggantinya

Catatan. Meskipun shell Python menampilkan hasil

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7, string itu sendiri tetap tidak berubah. Anda dapat melihat ini lebih jelas dengan menugaskan string Anda ke sebuah variabel

>>>

>>> name = "Fake Python"
>>> name.replace("Fake", "Real")
'Real Python'

>>> name
'Fake Python'

>>> name = name.replace("Fake", "Real")
'Real Python'

>>> name
'Real Python'
_

Perhatikan bahwa saat Anda memanggil

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
_7, nilai
>>> name = "Fake Python"
>>> name.replace("Fake", "Real")
'Real Python'

>>> name
'Fake Python'

>>> name = name.replace("Fake", "Real")
'Real Python'

>>> name
'Real Python'
6 tidak berubah. Tetapi ketika Anda menetapkan hasil
>>> name = "Fake Python"
>>> name.replace("Fake", "Real")
'Real Python'

>>> name
'Fake Python'

>>> name = name.replace("Fake", "Real")
'Real Python'

>>> name
'Real Python'
_7 ke variabel
>>> name = "Fake Python"
>>> name.replace("Fake", "Real")
'Real Python'

>>> name
'Fake Python'

>>> name = name.replace("Fake", "Real")
'Real Python'

>>> name
'Real Python'
6,
>>> name = "Fake Python"
>>> name.replace("Fake", "Real")
'Real Python'

>>> name
'Fake Python'

>>> name = name.replace("Fake", "Real")
'Real Python'

>>> name
'Real Python'
9 menjadi
>>> transcript = """\
.. [support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
.. [johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
.. [support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
.. [johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!"""

>>> transcript.replace("BLASTED", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
0

Sekarang saatnya menerapkan pengetahuan ini ke transkrip

>>>

>>> transcript = """\
.. [support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
.. [johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
.. [support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
.. [johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!"""

>>> transcript.replace("BLASTED", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
_

Memuat transkrip sebagai a dan kemudian menggunakan metode

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7 pada salah satu kata umpatan berfungsi dengan baik. Tapi ada kata umpatan lain yang tidak diganti karena di Python, string harus sama persis

>>>

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
_

Seperti yang Anda lihat, meskipun huruf kapital dari satu huruf tidak cocok, itu akan mencegah penggantian apa pun. Ini berarti bahwa jika Anda menggunakan metode

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7, Anda harus memanggilnya berkali-kali dengan variasi. Dalam hal ini, Anda dapat menyambungkan panggilan lain ke
>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7

>>>

>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
_

Kesuksesan. Tetapi Anda mungkin berpikir bahwa ini bukan cara terbaik untuk melakukan ini untuk sesuatu seperti pembersih transkripsi tujuan umum. Anda akan ingin beralih ke suatu cara untuk memiliki daftar pengganti, daripada harus mengetik

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7 setiap kali

Hilangkan iklan

Siapkan Beberapa Aturan Penggantian

Ada beberapa penggantian lagi yang perlu Anda lakukan pada transkrip agar formatnya dapat diterima untuk tinjauan independen

  • Persingkat atau hapus stempel waktu
  • Ganti nama pengguna dengan Agen dan Klien

Sekarang Anda mulai memiliki lebih banyak string untuk diganti, rantai pada

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7 akan berulang. Salah satu idenya adalah menyimpan daftar tupel, dengan dua item di setiap tupel. Kedua item tersebut akan sesuai dengan argumen yang perlu Anda sampaikan ke metode
>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7β€”string yang akan diganti dan string pengganti

# transcript_multiple_replace.py

REPLACEMENTS = [
    ("BLASTED", "😀"),
    ("Blast", "😀"),
    ("2022-08-24T", ""),
    ("+00:00", ""),
    ("[support_tom]", "Agent "),
    ("[johndoe]", "Client"),
]

transcript = """
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
"""

for old, new in REPLACEMENTS:
    transcript = transcript.replace(old, new)

print(transcript)

Dalam versi skrip pembersihan transkrip ini, Anda membuat daftar tupel pengganti, yang memberi Anda cara cepat untuk menambahkan pengganti. Anda bahkan dapat membuat daftar tupel ini dari file CSV eksternal jika Anda memiliki banyak pengganti

Anda kemudian mengulangi daftar tupel pengganti. Di setiap iterasi, Anda memanggil

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7 pada string, mengisi argumen dengan variabel
>>> transcript = """\
.. [support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
.. [johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
.. [support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
.. [johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!"""

>>> transcript.replace("BLASTED", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
8 dan
>>> transcript = """\
.. [support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
.. [johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
.. [support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
.. [johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!"""

>>> transcript.replace("BLASTED", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
9 yang telah dibongkar dari setiap tupel pengganti

Catatan. Pembongkaran di

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
_0 loop dalam hal ini secara fungsional sama dengan menggunakan pengindeksan

for replacement in replacements:
    new_transcript = new_transcript.replace(replacement[0], replacement[1])

Jika Anda bingung dengan membuka kemasannya, lihat dari tutorial tentang daftar dan tupel Python

Dengan ini, Anda telah membuat peningkatan besar dalam keseluruhan keterbacaan transkrip. Juga lebih mudah untuk menambahkan pengganti jika perlu. Menjalankan skrip ini mengungkapkan transkrip yang jauh lebih bersih

$ python transcript_multiple_replace.py
Agent  10:02:23 : What can I help you with?
Client 10:03:15 : I CAN'T CONNECT TO MY 😀 ACCOUNT
Agent  10:03:30 : Are you sure it's not your caps lock?
Client 10:04:03 : 😀! You're right!

Itu transkrip yang cukup bersih. Mungkin hanya itu yang Anda butuhkan. Tetapi jika automator batin Anda tidak senang, mungkin karena masih ada beberapa hal yang mungkin mengganggu Anda.

  • Mengganti kata makian tidak akan berhasil jika ada variasi lain yang menggunakan -ing atau kapitalisasi yang berbeda, seperti BLAst
  • Menghapus tanggal dari stempel waktu saat ini hanya berfungsi untuk 24 Agustus 2022
  • Menghapus stempel waktu penuh akan melibatkan penyiapan pasangan pengganti untuk setiap waktu yang memungkinkanβ€”bukan sesuatu yang terlalu ingin Anda lakukan
  • Menambahkan spasi setelah Agen untuk menyejajarkan kolom Anda berfungsi tetapi tidak terlalu umum

Jika ini adalah kekhawatiran Anda, maka Anda mungkin ingin mengalihkan perhatian Anda ke ekspresi reguler

Manfaatkan >>> "Fake Python".replace("Fake", "Real") 'Real Python' _8 untuk Membuat Aturan yang Kompleks

Setiap kali Anda ingin melakukan penggantian yang sedikit lebih rumit atau membutuhkan beberapa wildcard, Anda biasanya ingin mengalihkan perhatian Anda ke ekspresi reguler, juga dikenal sebagai regex

Regex adalah semacam bahasa mini yang terdiri dari karakter yang menentukan pola. Pola ini, atau regex, biasanya digunakan untuk mencari string dalam operasi temukan dan temukan dan ganti. Banyak bahasa pemrograman mendukung regex, dan banyak digunakan. Regex bahkan akan memberi Anda kekuatan super

Dalam Python, memanfaatkan regex berarti menggunakan modul

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
2 dan membangun pola regex Anda sendiri

# transcript_regex.py

import re

REGEX_REPLACEMENTS = [
    (r"blast\w*", "😀"),
    (r" [-T:+\d]{25}", ""),
    (r"\[support\w*\]", "Agent "),
    (r"\[johndoe\]", "Client"),
]

transcript = """
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
"""

for old, new in REGEX_REPLACEMENTS:
    transcript = re.sub(old, new, transcript, flags=re.IGNORECASE)

print(transcript)

Meskipun Anda dapat mencampur dan mencocokkan fungsi

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
_3 dengan metode
>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7, contoh ini hanya menggunakan
>>> "Fake Python".replace("fake", "Real")
'Fake Python'
3, sehingga Anda dapat melihat bagaimana penggunaannya. Anda akan melihat bahwa Anda dapat mengganti semua variasi kata umpatan dengan hanya menggunakan satu tupel pengganti sekarang. Demikian pula, Anda hanya menggunakan satu regex untuk stempel waktu penuh

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
0

Sekarang transkrip Anda telah dibersihkan sepenuhnya, dengan semua kebisingan dihilangkan. Bagaimana itu bisa terjadi?

Pola regex pertama,

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
_7, memanfaatkan
>>> "Fake Python".replace("fake", "Real")
'Fake Python'
8 karakter khusus, yang akan cocok dengan karakter alfanumerik dan garis bawah. Menambahkan bilangan
>>> "Fake Python".replace("fake", "Real")
'Fake Python'
9 langsung setelahnya akan cocok dengan nol atau lebih karakter dari
>>> "Fake Python".replace("fake", "Real")
'Fake Python'
8

Bagian penting lainnya dari pola pertama adalah bahwa flag

>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
1 membuatnya menjadi pola case-insensitive. Jadi sekarang, setiap substring yang mengandung
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
2, terlepas dari kapitalisasinya, akan dicocokkan dan diganti

Catatan. Pola

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
_7 cukup luas dan juga akan mengubah
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
4 menjadi
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
5. Itu juga tidak dapat mengidentifikasi penggunaan kata yang sopan. Itu hanya cocok dengan karakternya. Meskipun demikian, kata-kata umpatan khas yang ingin Anda sensor sebenarnya tidak memiliki arti alternatif yang sopan

Pola regex kedua menggunakan rangkaian karakter dan bilangan untuk menggantikan stempel waktu. Anda sering menggunakan rangkaian karakter dan bilangan secara bersamaan. Pola regex

>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
_6, misalnya, akan cocok dengan satu karakter
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
7,
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
8, atau
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
9. Menempatkan
>>> "Fake Python".replace("fake", "Real")
'Fake Python'
_9 tepat setelahnya akan cocok dengan nol atau lebih karakter dari
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
7,
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
8, atau
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
9

Namun, ada lebih banyak bilangan. Jika Anda menggunakan

# transcript_multiple_replace.py

REPLACEMENTS = [
    ("BLASTED", "😀"),
    ("Blast", "😀"),
    ("2022-08-24T", ""),
    ("+00:00", ""),
    ("[support_tom]", "Agent "),
    ("[johndoe]", "Client"),
]

transcript = """
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
"""

for old, new in REPLACEMENTS:
    transcript = transcript.replace(old, new)

print(transcript)
4, itu akan sama persis dengan sepuluh karakter dari
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
7,
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
8 atau
>>> transcript.replace("BLASTED", "😀").replace("Blast", "😀")
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY 😀 ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : 😀! You're right!
9 dalam urutan dan kombinasi apa pun. Perhatikan juga bahwa pengulangan karakter itu mubazir, jadi
# transcript_multiple_replace.py

REPLACEMENTS = [
    ("BLASTED", "😀"),
    ("Blast", "😀"),
    ("2022-08-24T", ""),
    ("+00:00", ""),
    ("[support_tom]", "Agent "),
    ("[johndoe]", "Client"),
]

transcript = """
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
"""

for old, new in REPLACEMENTS:
    transcript = transcript.replace(old, new)

print(transcript)
8 setara dengan
# transcript_multiple_replace.py

REPLACEMENTS = [
    ("BLASTED", "😀"),
    ("Blast", "😀"),
    ("2022-08-24T", ""),
    ("+00:00", ""),
    ("[support_tom]", "Agent "),
    ("[johndoe]", "Client"),
]

transcript = """
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
"""

for old, new in REPLACEMENTS:
    transcript = transcript.replace(old, new)

print(transcript)
9

Untuk stempel waktu, Anda menggunakan rangkaian karakter tambahan

for replacement in replacements:
    new_transcript = new_transcript.replace(replacement[0], replacement[1])
0 untuk mencocokkan semua kemungkinan karakter yang mungkin Anda temukan di stempel waktu. Dipasangkan dengan quantifier
for replacement in replacements:
    new_transcript = new_transcript.replace(replacement[0], replacement[1])
1, ini akan cocok dengan stempel waktu apa pun yang memungkinkan, setidaknya hingga tahun 10.000

Catatan. Karakter khusus,

for replacement in replacements:
    new_transcript = new_transcript.replace(replacement[0], replacement[1])
_2, cocok dengan karakter angka apa pun

Pola regex stempel waktu memungkinkan Anda untuk memilih kemungkinan tanggal dalam format stempel waktu. Mengingat waktunya tidak penting bagi peninjau independen transkrip ini, Anda menggantinya dengan string kosong. Dimungkinkan untuk menulis regex yang lebih canggih yang menyimpan informasi waktu sambil menghapus tanggal

Pola regex ketiga digunakan untuk memilih string pengguna yang dimulai dengan kata kunci

for replacement in replacements:
    new_transcript = new_transcript.replace(replacement[0], replacement[1])
3. Perhatikan bahwa Anda menghindari (
for replacement in replacements:
    new_transcript = new_transcript.replace(replacement[0], replacement[1])
_4) tanda kurung siku (
for replacement in replacements:
    new_transcript = new_transcript.replace(replacement[0], replacement[1])
5) karena jika tidak, kata kunci akan ditafsirkan sebagai kumpulan karakter

Terakhir, pola regex terakhir memilih string nama pengguna klien dan menggantinya dengan

for replacement in replacements:
    new_transcript = new_transcript.replace(replacement[0], replacement[1])
6

Catatan. Meskipun akan sangat menyenangkan untuk membahas lebih detail tentang pola regex ini, tutorial ini bukan tentang regex. Bekerja melalui tutorial regex Python untuk primer yang baik pada subjek. Juga, Anda dapat menggunakan situs web RegExr yang fantastis, karena regex itu rumit dan penyihir regex dari semua tingkatan bergantung pada alat praktis seperti RegExr

RegExr sangat bagus karena Anda dapat menyalin dan menempel pola regex, dan itu akan memecahnya untuk Anda dengan penjelasan

Dengan regex, Anda dapat secara drastis mengurangi jumlah penggantian yang harus Anda tulis. Meskipun demikian, Anda mungkin masih harus membuat banyak pola. Melihat regex bukan bahasa yang paling mudah dibaca, memiliki banyak pola dapat dengan cepat menjadi sulit dipertahankan

Untungnya, ada trik rapi dengan

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
8 yang memungkinkan Anda untuk memiliki sedikit lebih banyak kontrol atas cara kerja penggantian, dan ini menawarkan arsitektur yang jauh lebih dapat dipelihara

Hilangkan iklan

Gunakan Panggilan Balik Dengan >>> "Fake Python".replace("Fake", "Real") 'Real Python' _8 untuk Kontrol Lebih Banyak

Salah satu trik yang dimiliki Python dan

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
3 adalah Anda dapat meneruskan fungsi callback alih-alih string pengganti. Ini memberi Anda kendali penuh atas cara mencocokkan dan mengganti

Untuk mulai membuat versi skrip pembersih transkrip ini, Anda akan menggunakan pola regex dasar untuk melihat cara kerja callback dengan

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
3

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
_1

Pola regex yang Anda gunakan akan cocok dengan stempel waktu, dan alih-alih memberikan string pengganti, Anda meneruskan referensi ke fungsi

$ python transcript_multiple_replace.py
Agent  10:02:23 : What can I help you with?
Client 10:03:15 : I CAN'T CONNECT TO MY 😀 ACCOUNT
Agent  10:03:30 : Are you sure it's not your caps lock?
Client 10:04:03 : 😀! You're right!
1. Sekarang, ketika
>>> "Fake Python".replace("fake", "Real")
'Fake Python'
3 menemukan kecocokan, itu akan memanggil
$ python transcript_multiple_replace.py
Agent  10:02:23 : What can I help you with?
Client 10:03:15 : I CAN'T CONNECT TO MY 😀 ACCOUNT
Agent  10:03:30 : Are you sure it's not your caps lock?
Client 10:04:03 : 😀! You're right!
1 dengan objek kecocokan sebagai argumen

Karena

$ python transcript_multiple_replace.py
Agent  10:02:23 : What can I help you with?
Client 10:03:15 : I CAN'T CONNECT TO MY 😀 ACCOUNT
Agent  10:03:30 : Are you sure it's not your caps lock?
Client 10:04:03 : 😀! You're right!
_1 baru saja mencetak objek yang diterima sebagai argumen, saat menjalankan ini, Anda akan melihat objek yang cocok dicetak ke konsol

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
_2

A adalah salah satu blok penyusun modul

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
2. Fungsi
$ python transcript_multiple_replace.py
Agent  10:02:23 : What can I help you with?
Client 10:03:15 : I CAN'T CONNECT TO MY 😀 ACCOUNT
Agent  10:03:30 : Are you sure it's not your caps lock?
Client 10:04:03 : 😀! You're right!
_6 yang lebih mendasar mengembalikan objek yang cocok.
>>> "Fake Python".replace("fake", "Real")
'Fake Python'
3 tidak mengembalikan objek yang cocok tetapi menggunakannya di belakang layar

Karena Anda mendapatkan objek yang cocok ini di callback, Anda dapat menggunakan informasi apa pun yang terkandung di dalamnya untuk membuat string pengganti. Setelah dibuat, Anda mengembalikan string baru, dan

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
3 akan mengganti kecocokan dengan string yang dikembalikan

Terapkan Callback ke Script

Dalam skrip sanitasi transkrip Anda, Anda akan menggunakan metode

$ python transcript_multiple_replace.py
Agent  10:02:23 : What can I help you with?
Client 10:03:15 : I CAN'T CONNECT TO MY 😀 ACCOUNT
Agent  10:03:30 : Are you sure it's not your caps lock?
Client 10:04:03 : 😀! You're right!
9 dari objek pencocokan untuk mengembalikan konten dari dua grup tangkapan, dan kemudian Anda dapat membersihkan setiap bagian dalam fungsinya sendiri atau membuangnya

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
_3

Alih-alih memiliki banyak regex yang berbeda, Anda dapat memiliki satu regex tingkat atas yang dapat mencocokkan seluruh baris, membaginya menjadi grup tangkap dengan tanda kurung (

# transcript_regex.py

import re

REGEX_REPLACEMENTS = [
    (r"blast\w*", "😀"),
    (r" [-T:+\d]{25}", ""),
    (r"\[support\w*\]", "Agent "),
    (r"\[johndoe\]", "Client"),
]

transcript = """
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
"""

for old, new in REGEX_REPLACEMENTS:
    transcript = re.sub(old, new, transcript, flags=re.IGNORECASE)

print(transcript)
0). Grup tangkapan tidak berpengaruh pada proses pencocokan yang sebenarnya, tetapi mereka memengaruhi objek pencocokan yang dihasilkan dari pencocokan

  • # transcript_regex.py
    
    import re
    
    REGEX_REPLACEMENTS = [
        (r"blast\w*", "😀"),
        (r" [-T:+\d]{25}", ""),
        (r"\[support\w*\]", "Agent "),
        (r"\[johndoe\]", "Client"),
    ]
    
    transcript = """
    [support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
    [johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
    [support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
    [johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
    """
    
    for old, new in REGEX_REPLACEMENTS:
        transcript = re.sub(old, new, transcript, flags=re.IGNORECASE)
    
    print(transcript)
    
    _1 cocok dengan urutan karakter apa pun yang dibungkus dengan tanda kurung siku. Grup penangkap mengambil string nama pengguna, misalnya
    >>> name = "Fake Python"
    >>> name.replace("Fake", "Real")
    'Real Python'
    
    >>> name
    'Fake Python'
    
    >>> name = name.replace("Fake", "Real")
    'Real Python'
    
    >>> name
    'Real Python'
    
    1
  • # transcript_regex.py
    
    import re
    
    REGEX_REPLACEMENTS = [
        (r"blast\w*", "😀"),
        (r" [-T:+\d]{25}", ""),
        (r"\[support\w*\]", "Agent "),
        (r"\[johndoe\]", "Client"),
    ]
    
    transcript = """
    [support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
    [johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
    [support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
    [johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
    """
    
    for old, new in REGEX_REPLACEMENTS:
        transcript = re.sub(old, new, transcript, flags=re.IGNORECASE)
    
    print(transcript)
    
    _3 cocok dengan stempel waktu, yang Anda jelajahi di bagian terakhir. Karena Anda tidak akan menggunakan stempel waktu di transkrip akhir, itu tidak ditangkap dengan tanda kurung
  • # transcript_regex.py
    
    import re
    
    REGEX_REPLACEMENTS = [
        (r"blast\w*", "😀"),
        (r" [-T:+\d]{25}", ""),
        (r"\[support\w*\]", "Agent "),
        (r"\[johndoe\]", "Client"),
    ]
    
    transcript = """
    [support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
    [johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
    [support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
    [johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
    """
    
    for old, new in REGEX_REPLACEMENTS:
        transcript = re.sub(old, new, transcript, flags=re.IGNORECASE)
    
    print(transcript)
    
    _4 cocok dengan titik dua literal. Tanda titik dua digunakan sebagai pemisah antara metadata pesan dan pesan itu sendiri
  • # transcript_regex.py
    
    import re
    
    REGEX_REPLACEMENTS = [
        (r"blast\w*", "😀"),
        (r" [-T:+\d]{25}", ""),
        (r"\[support\w*\]", "Agent "),
        (r"\[johndoe\]", "Client"),
    ]
    
    transcript = """
    [support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
    [johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
    [support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
    [johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
    """
    
    for old, new in REGEX_REPLACEMENTS:
        transcript = re.sub(old, new, transcript, flags=re.IGNORECASE)
    
    print(transcript)
    
    _5 cocok dengan urutan karakter apa pun hingga akhir baris, yang akan menjadi pesan

Konten grup penangkap akan tersedia sebagai item terpisah dalam objek pencocokan dengan memanggil metode

$ python transcript_multiple_replace.py
Agent  10:02:23 : What can I help you with?
Client 10:03:15 : I CAN'T CONNECT TO MY 😀 ACCOUNT
Agent  10:03:30 : Are you sure it's not your caps lock?
Client 10:04:03 : 😀! You're right!
9, yang mengembalikan Tuple dari string yang cocok

Catatan. Definisi entri regex menggunakan penggabungan string implisit Python

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
_4

Secara fungsional, ini sama dengan menuliskan semuanya sebagai satu string tunggal.

# transcript_regex.py

import re

REGEX_REPLACEMENTS = [
    (r"blast\w*", "😀"),
    (r" [-T:+\d]{25}", ""),
    (r"\[support\w*\]", "Agent "),
    (r"\[johndoe\]", "Client"),
]

transcript = """
[support_tom] 2022-08-24T10:02:23+00:00 : What can I help you with?
[johndoe] 2022-08-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT
[support_tom] 2022-08-24T10:03:30+00:00 : Are you sure it's not your caps lock?
[johndoe] 2022-08-24T10:04:03+00:00 : Blast! You're right!
"""

for old, new in REGEX_REPLACEMENTS:
    transcript = re.sub(old, new, transcript, flags=re.IGNORECASE)

print(transcript)
_7. Mengatur pola regex Anda yang lebih panjang pada baris terpisah memungkinkan Anda memecahnya menjadi potongan-potongan, yang tidak hanya membuatnya lebih mudah dibaca tetapi juga memungkinkan Anda untuk menyisipkan komentar juga

Kedua grup tersebut adalah string pengguna dan pesan. Metode

$ python transcript_multiple_replace.py
Agent  10:02:23 : What can I help you with?
Client 10:03:15 : I CAN'T CONNECT TO MY 😀 ACCOUNT
Agent  10:03:30 : Are you sure it's not your caps lock?
Client 10:04:03 : 😀! You're right!
_9 mengembalikannya sebagai kumpulan string. Dalam fungsi
$ python transcript_multiple_replace.py
Agent  10:02:23 : What can I help you with?
Client 10:03:15 : I CAN'T CONNECT TO MY 😀 ACCOUNT
Agent  10:03:30 : Are you sure it's not your caps lock?
Client 10:04:03 : 😀! You're right!
_1, pertama-tama Anda menggunakan unpacking untuk menetapkan dua string ke variabel

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
5

Perhatikan bagaimana arsitektur ini memungkinkan regex yang sangat luas dan inklusif di tingkat atas, lalu memungkinkan Anda melengkapinya dengan regex yang lebih tepat di dalam callback pengganti

Fungsi

$ python transcript_multiple_replace.py
Agent  10:02:23 : What can I help you with?
Client 10:03:15 : I CAN'T CONNECT TO MY 😀 ACCOUNT
Agent  10:03:30 : Are you sure it's not your caps lock?
Client 10:04:03 : 😀! You're right!
_1 memanfaatkan dua fungsi untuk membersihkan nama pengguna dan kata-kata buruk. Itu juga menggunakan f-string untuk membenarkan pesan. Perhatikan bagaimana
>>> "Fake Python".replace("Fake", "Real")
'Real Python'
_01 menggunakan regex yang dibuat secara dinamis sementara
>>> "Fake Python".replace("Fake", "Real")
'Real Python'
02 bergantung pada pemrosesan string yang lebih mendasar

Ini sekarang terlihat seperti prototipe pertama yang bagus untuk skrip pembersih transkrip. Outputnya sangat bersih

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
_6

Bagus. Menggunakan

>>> "Fake Python".replace("fake", "Real")
'Fake Python'
_3 dengan panggilan balik memberi Anda lebih banyak fleksibilitas untuk mencampur dan mencocokkan metode yang berbeda dan membangun regex secara dinamis. Struktur ini juga memberi Anda ruang paling besar untuk tumbuh ketika atasan atau klien Anda mau tidak mau mengubah persyaratan mereka terhadap Anda

Hilangkan iklan

Kesimpulan

Dalam tutorial ini, Anda telah mempelajari cara mengganti string dengan Python. Sepanjang jalan, Anda telah beralih dari menggunakan metode string

>>> "Fake Python".replace("Fake", "Real")
'Real Python'
7 Python dasar menjadi menggunakan panggilan balik dengan
>>> "Fake Python".replace("Fake", "Real")
'Real Python'
8 untuk kontrol absolut. Anda juga telah menjelajahi beberapa pola regex dan mendekonstruksinya menjadi arsitektur yang lebih baik untuk mengelola skrip pengganti

Dengan semua pengetahuan itu, Anda berhasil membersihkan transkrip obrolan, yang kini siap untuk ditinjau secara independen. Tidak hanya itu, skrip pembersih transkrip Anda memiliki banyak ruang untuk berkembang

Kode sampel. Klik di sini untuk mengunduh kode sampel gratis yang akan Anda gunakan untuk mengganti string dengan Python

Tandai sebagai Selesai

🐍 Trik Python πŸ’Œ

Dapatkan Trik Python singkat & manis yang dikirim ke kotak masuk Anda setiap beberapa hari. Tidak pernah ada spam. Berhenti berlangganan kapan saja. Dikuratori oleh tim Real Python

Bagaimana Anda mengganti karakter tertentu dalam sebuah string dengan python?

Kirimi Saya Trik Python Β»

Tentang Ian Currie

Bagaimana Anda mengganti karakter tertentu dalam sebuah string dengan python?
Bagaimana Anda mengganti karakter tertentu dalam sebuah string dengan python?

Ian adalah kutu buku Python yang menggunakannya untuk segala hal mulai dari mengutak-atik hingga membantu orang dan perusahaan mengelola hari demi hari dan mengembangkan bisnis mereka

Β» Lebih lanjut tentang Ian


Setiap tutorial di Real Python dibuat oleh tim pengembang sehingga memenuhi standar kualitas tinggi kami. Anggota tim yang mengerjakan tutorial ini adalah

Bagaimana Anda mengganti karakter tertentu dalam sebuah string dengan python?

Aldren

Bagaimana Anda mengganti karakter tertentu dalam sebuah string dengan python?

Geir Arne

Bagaimana Anda mengganti karakter tertentu dalam sebuah string dengan python?

Kate

Bagaimana Anda mengganti karakter tertentu dalam sebuah string dengan python?

Filipina

Master Keterampilan Python Dunia Nyata Dengan Akses Tanpa Batas ke PythonΒ Nyata

Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas pakarΒ Pythonista

Tingkatkan Keterampilan Python Anda Β»

Guru Keterampilan Python Dunia Nyata
Dengan Akses Tak Terbatas ke RealΒ Python

Bergabunglah dengan kami dan dapatkan akses ke ribuan tutorial, kursus video langsung, dan komunitas ahli Pythonista

Tingkatkan Keterampilan Python Anda Β»

Bagaimana menurutmu?

Nilai artikel ini

Tweet Bagikan Bagikan Email

Apa takeaway # 1 Anda atau hal favorit yang Anda pelajari?

Kiat Berkomentar. Komentar yang paling berguna adalah yang ditulis dengan tujuan belajar dari atau membantu siswa lain. dan dapatkan jawaban atas pertanyaan umum di portal dukungan kami

Bagaimana cara mengganti hanya satu karakter dalam sebuah string?

String tidak dapat diubah di Jawa. Anda tidak dapat mengubahnya. Anda perlu membuat string baru dengan karakter yang diganti .

Bagaimana Anda mengganti bagian tertentu dari string dengan sesuatu yang lain Python?

Dengan Python, the. replace() metode dan re. fungsi sub() sering digunakan untuk membersihkan teks dengan menghapus string atau substring atau menggantinya.

Bagaimana cara mengganti semua kemunculan karakter dalam string Python?

Metode replace() .