Hapus Karakter-Karakter 'Aneh' Dalam String Di Python

By Budyks    Python

Seringkali kita memerlukan untuk me-rename/replace sebuah string atau nama file yang mengandung karakter-karakter seperti Aksara mandarin,Vietnam, Thailand dsb. Kita dapat melakukan ini dengan mudah di Python  
Notes : Jika menemukan string dicontoh dibawah ini "?????????"  itu sebenarnya adalah huruf asing seperti tampak pada gambar diatas.

1. Di Dalam String

Misalkan entah bagaimana tiba-tiba kita mempunyai sebuah string yang mengandung huruf atau karakter seperti ?????????_   atau ????bunga . untuk me-repalce/rename string tersebut kita bisa lakukan seperti ini di python:
# coding=utf-8
def for_string(stri):        #replace with ""    return "".join(i for i in stri if ord(i)<128)#call functionmystr = "?????????_5879716884_mfvd"print for_string(mystr)
Perhatikan ada syntax namanya ord()  itu adalah Built-in function di Python untul mengetahui nilai Unicode dari 1 huruf misalkan ord('a') hasilnya  integer 97 (ascii), ord(u'\u2020') hasilnya 8224. dsb.

2. Di Dalam Filename 

Disini kita biasanya sering menemukan huruf-huruf yang kita tidak inginkan karena mungkin dari hasil download dsb. Dengan fungsi Python dibawah ini kita dapat me-rename banyak file sekaligus jadi tidak usah satu-satu kita proses.
Misal file nya berupa gambar seperti ini (file terletak didalam folder img)
maka kita bisa rename sekaligus dengan kode Python berikut:
# coding=utf-8
def for_filename(img_folder):        for fname in os.listdir(img_folder):            img_path = os.path.join(img_folder,fname)                #if file doesnt exist, just continue        if not os.path.isfile(img_path):            continue                #replace with ""        newname = "".join(i for i in fname if ord(i)<128)                #rename file          os.rename(img_path,os.path.join(img_folder,newname))
#call functionimg_folder = "img/"for_filename(img_folder)
Baiknya kita gabung saja fungsi-fungsi diatas agar lebih flexible
# coding=utf-8
import os
def for_string(stri):        #replace with ""    return "".join(i for i in stri if ord(i)<128)
def for_filename(img_folder):        for fname in os.listdir(img_folder):            img_path = os.path.join(img_folder,fname)                #if file doesnt exist, just continue        if not os.path.isfile(img_path):            continue                #replace with ""        newname = "".join(i for i in fname if ord(i)<128)                #rename file          os.rename(img_path,os.path.join(img_folder,newname))    if __name__ == '__main__':            mystr = "?????????_5879716884_mfvd"    print for_string(mystr)        print "========================"        img_folder = "img/"    for_filename(img_folder)
 
Dari kode-kode diatas kita akan temukan ord(i) > 128 . Kenapa 128 ? karena karakter-karakter yang bukan standar ASCII berada diatas 128 (Google untuk lebih jelas). Lalu kita juga lihat potongan kode "".join(argx,argv)   itu artinya huruf-huruf 'aneh' yang ada di dalam string/filename kita replace/rename dengan "" (kosong). Jika ingin diganti dengan yang lain bisa, misal seperti ini:
"abc".join(argx,argv)
huruf-huruf tadi akan di replace dengan "abc".
Jangan lupa juga untuk menset Encoding file kode kita (letakan dibaris paling atas)
# coding=utf-8

def contoh():
...
...
...
Sekian. Semoga bermanfaat.

Comments



    Follow Us