Indonesian (Bahasa Indonesia) translation by Yosef Andreas (you can also view the original English article)
Katakanlah bahwa seseorang yang familiar dengan pengejaan British dan telah memutuskan untuk menyelesaikan kuliahnya di US. Dia diminta untuk menuliskan sebuah paper tentang Python untuk kelasnya. Dia sangat fasih dalam Python dan tidak memiliki permasalahan dalam menuliskan paper. Dia sedang berbicara tentang sebuah bagian dalam papernya dan menuliskan lebih dari sekali kata grey
(pengejaan British) bukannya gray
(pengejaan US), dengan tambahan ke neighbourhood
(pengejaan British) bukannya neighborhood
(pengejaan US). Namun dia sekarang berada di US dan harus menelusuri semua kata-kata dalam ejaan British dan menggantinya dengan ejaan US.
Ini merupakan salah satu dari banyak skenario dimana kita perlu mengubah beberapa ejaan atau kesalahan dalam berbagai lokasi.
Dalam tip singkat ini, saya akan menunjukkan sebuah contoh dimana kita memiliki lima file teks yang salah mengeja nama saya. Yaitu, bukannya menulis Abder
, yang tertulis adalah Adber
. Contoh ini akan menunjukkanmu bagaimana kita dapat menggunakan Python untuk memperbaiki pengejaan nama saya dalam semua file teks yang berada dalam sebuah direktori.
Mari kita mulai!
Persiapan Data
Sebelum kita melaju dengan contoh, mari persiapkan data (file teks) yang ingin kita kerjakan. Silahkan dan download direktori dengan filenya. Unzip direktori dan kamu sekarang sudah siap.
Seperti yang dapat kamu lihat, kita mempunyai sebuah direktori bernama Abder
yang berisi lima file berbeda bernama 1,2,3,4, dan 5
.
Penerapan
Mari mulai bagian menyenangkannya. Hal pertama yang perlu kita lakukan adalah membaca konten direktori Abder
. Untuk ini, kita dapat menggunakan method listdir()
, sebagai berikut:
1 |
import os |
2 |
directory = os.listdir('/Users/DrAbder/Desktop/Abder') |
Jika kita mencoba untuk melihat apa yang ada di dalam direktori, kita dapat melakukan di bawah ini:
1 |
print directory |
Dalam kasus ini, kita akan mendapatkan:
1 |
['.DS_Store', '1.rtf', '2.rtf', '3.rtf', '4.rtf', '5.rtf'] |
Ini menunjukkan bahwa kita memiliki lima file rft
di dalam direktori.
Untuk memastikan kita berkerja dengan direktori terkini (direktori yang dipilih), kita dapat menggunakan chdir
sebagai berikut:
1 |
os.chdir('/Users/DrAbder/Desktop/Abder') |
Hal berikutnya yang perlu kita lakukan adalah melakukan loop melalui semua file di dalam direktori Abder
. Kita dapat menggunakan for-loop
sebagai berikut:
1 |
for file in directory: |
Karena kita ingin melihat dalam tiap lima file di dalam direktori dan mencari Abder
, hal normal untuk dilakukan pada tahapan ini adalah membuka dan membaca konten untuk tiap file:
1 |
open_file = open(file,'r') |
2 |
read_file = open_file.read() |
Sekarang adalah tahapan vitalnya, khususnya ketika berbicara tentang pencocokan pola, dalam kasus kita, pencarian Adber
. Langkah ini adalah penggunaan regular expression. Dalam Python, untuk menggunakan regular expression, kita akan menggunakan module re.
Kita akan menggunakan dua function utama dari module ini. Yang pertama adalah compile():
Menyusun sebuah pola regular expression ke dalam sebuah obyek regular expression, yang dapat digunakan untuk mencocokkan methodmatch()
dansearch()
.
Dan yang kedua adalah sub(), untuk menggantikan pengejaan yang salah dengan yang benar. Oleh karena itu kita akan melakukan di bawah ini:
1 |
regex = re.compile('Adber') |
2 |
read_file = regex.sub('Abder', read_file) |
Terakhir, kita ingin menuliskan teks baru setelah penggantian pada file kita, sebagai berikut:
1 |
write_file = open(file,'w') |
2 |
write_file.write(read_file) |
Meletakkan Semuanya Bersama-sama
Dalam section ini, mari lihat bagaimana tampilan keseluruhan script Python, yang akan mencari Adber
di dalam tiap file dan menggantinya dengan Abder
:
1 |
import os, re |
2 |
|
3 |
directory = os.listdir('/Users/DrAbder/Desktop/Abder') |
4 |
os.chdir('/Users/DrAbder/Desktop/Abder') |
5 |
|
6 |
for file in directory: |
7 |
open_file = open(file,'r') |
8 |
read_file = open_file.read() |
9 |
regex = re.compile('Adber') |
10 |
read_file = regex.sub('Abder', read_file) |
11 |
write_file = open(file,'w') |
12 |
write_file.write(read_file) |
Seperti yang dapat kita lihat, Python membuatnya sangat mudah untuk menjalankan modifikasi sepanjang berbagai file menggunakan for-loop
. Bagian penting lainnya untuk diingat di sini adalah penggunaan regular expression untuk pencocokan pola.
Jika kamu ingin mengetahui lebih lanjut tentang loop pada Python, periksa Penyegaran Halus Tentang Loop Pada Python. Dan untuk informasi lebih lanjut tentang regular expression, periksa Regular Expression Dalam Python.