
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.