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 function
mystr = "?????????_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 function
img_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.