æ£èŠè¡šçŸã䜿ã£ããã¿ãŒã³ãããã¯ãšãŠã䟿å©ãªã®ã ãããªãã ãé£ããããšããã€ã¡ãŒãžãæã£ãŠããªãã ããããæ£èŠè¡šçŸã¯ã¯ã€ã«ãã«ãŒããæ¡åŒµãããã®ãšèããŠåºæ¬ã ããèŠããã ãã§ãããããããªå Žé¢ã§æŽ»çšã§ãããä»åã¯ãæ£èŠè¡šçŸã䜿ã£ãŠå€§éãã¡ã€ã«ã®èªååé¡ã«ææŠããŠã¿ããã
æ£èŠè¡šçŸãšã¯ïŒ
æ£èŠè¡šçŸãšã¯æååãç¹æ®ãªãã¿ãŒã³ã䜿ã£ãŠè¡šçŸãããã®ã ããã¡ã€ã«æäœã«äœ¿ãã¯ã€ã«ãã«ãŒããæ¡åŒµãããã®ãšèšãã°åãããããã ããããä»ããæ£èŠè¡šçŸã¯å€§æµã®ããã¹ããšãã£ã¿ã«å®è£ ãããŠããããšããããæ£èŠè¡šçŸãèŠãããªããPythonã®ããã°ã©ãã³ã°ã ãã§ãªããæ¥ã ã®ããããå Žé¢ã§åœ¹ç«ã€ãšãèšããã
ãªãã以忬é£èŒã®33åç®ã§ãæ£èŠè¡šçŸã«ã€ããŠç޹ä»ããããä»åã¯Pythonã§ãã¡ã€ã«ãåé¡ããç®çã®ãããåºæ¬ã®åºæ¬ã«çµã£ãŠç޹ä»ãããã
Pythonã§æ£èŠè¡šçŸãäœ¿ãæ¹æ³
Pythonã§æ£èŠè¡šçŸäœ¿ãã«ã¯æšæºã©ã€ãã©ãªã®ãreãã䜿ãããããŠãre.searchã¡ãœããã£ãŠæ£èŠè¡šçŸæ€çŽ¢ãè¡ãããšãã§ããã以äžã¯ããabc.txtããšããæååãã^aããšããæ£èŠè¡šçŸãã¿ãŒã³ã«äžèŽãããããã¹ãããããã°ã©ã ã ã以äžã®ããã°ã©ã ããre_test.pyããšããååã§ä¿åãããã
# reã¢ãžã¥ãŒã«ã®åã蟌ã¿
import re
# æ£èŠè¡šçŸæ€çŽ¢ãè¡ã
target = "abc.txt"
pattern = "^a"
if re.search(pattern, target) is None:
print("ãããããªã")
else:
print("ããããã")
ããã°ã©ã ãå®è¡ããã«ã¯ã³ãã³ãã©ã€ã³ã§ãpython3 re_test.pyããšã³ãã³ããå ¥åãããIDLEãèµ·åããŠãã¡ã€ã«ãéžæããŠå®è¡ããã
ããã§ã¯ã^aããšããæ£èŠè¡šçŸãã¿ãŒã³ãæå®ããŠããããã®ã^ãã¯æååã®å é ãæå³ãããã¿ãŒã³ã ãã€ãŸããã^aããšæžããšaããå§ãŸãæååãã©ãããšããæå³ã«ãªãã
ãã¡ã€ã«äžèЧããç¹å®ã®ãã¿ãŒã³ã®ãã®ã ããéžãã§è¡šç€ºããã
ããäžã€ç°¡åãªããã°ã©ã ã§ç¢ºèªããŠã¿ããã以äžã®ããã°ã©ã ã¯ããã¡ã€ã«äžèЧã衚ãé åfilesã®äžã§æ¡åŒµåã.txtãã§çµãããã®ã ããéžãã§è¡šç€ºããäŸã ã以äžããfilter.pyããšããååã§ä¿åãããã
import re
# ãã¡ã€ã«ã®äžèЧ
files = ["aaa.mp3", "bbb.txt", "200abc.txt",
"201eee.txt", "aaa.txt", "200.mp3"]
# æ¡åŒµåã.txtãã®ãã®ã ãã衚瀺
for f in files:
if re.search(r'\.txt$', f):
print(f)
ããã°ã©ã ãå®è¡ããã«ã¯IDLEã䜿ãããã³ãã³ãã©ã€ã³ã§ãpython3 filter.pyããå®è¡ãããã
ãããŠãããã°ã©ã ãå®è¡ãããšããªã¹ãå倿°filesã®äžèЧããã.txtãã®æ¡åŒµåãå«ããã®ã ããéžãã§è¡šç€ºã§ããã
$ python3 filter.py
bbb.txt
200abc.txt
201eee.txt
aaa.txt
ããã°ã©ã äžã§æå®ããæ£èŠè¡šçŸã\.txt$ãã ããã\.ããšæžããšããã(.)ãæå³ãããæ£èŠè¡šçŸã§ãããã¯æå1åã衚ãç¹æ®æåã®ããããããã衚çŸãããæã«ã¯ã\.ããšèšè¿°ããå¿ èŠãããããŸããPythonã§ãr'...'ããšèšè¿°ãããšæååã®å±éãæå¶ã§ããã®ã§ãæ£èŠè¡šçŸãã¿ãŒã³ãæå®ãããæãªã©ã«éå®ããã
200å以äžã®ãã¡ã€ã«ããã©ã«ãåãããã
ããŠãæ£èŠè¡šçŸã®äœ¿ãæ¹ãèŠããã®ã§ããã£ããä»åã®ãé¡ã«ææŠããããä»åãçè ãæ¥ã ã®äœæ¥ã§è¡ã£ããã®ãããŒã¹ãšãªã£ãŠããã以äžã®ããã«ã200ãè¶ ããMP3ãã¡ã€ã«ããã1ã€ã®ãã©ã«ãã«å ¥ã£ãŠããã
å®ã¯ãã®MP3ãã¡ã€ã«ã¯ãããšããšè±èªãäžåœèªãæ¥æ¬èªãšåèšèªããšã«æŽçããããã®ã ããã¡ã€ã«åãèŠããšä»¥äžã®ãããªèŠåã«ãªã£ãŠããã
osg_(èšèªã³ãŒã)_(ããŒã¿çªå·).mp3
ããã§èšèªã³ãŒãã¯ãæ¥æ¬èªãJããè±èªãEããäžåœèªãCHSãã®ãããªãã®ã«ãªã£ãŠãããããã§ããããèšèªããšã®ãã©ã«ãã«åé¡ããããã°ã©ã ãäœã£ãŠã¿ããã
ãã¡ãã«ãµã³ãã«ãã¡ã€ã«ã®äžèЧãã¢ããããŒãããŠããŸãã
ãããŠããããMP3ãã¡ã€ã«ã®ãã¡ã€ã«åããæ£èŠè¡šçŸã§èšèªã³ãŒããåãåºããŠãã©ã«ãæ¯ã«æ¯ãåããããã°ã©ã ã以äžã®ãã®ãšãªãããbunrui.pyããšããååã§ä¿åãããã
import re, os, glob, shutil
# ãã¡ã€ã«äžèЧãååŸãã --- (*1)
files = glob.glob("*.mp3")
base_dir = os.path.dirname(__file__)
# åãã¡ã€ã«ããšã«åŠçãè¡ã --- (*2)
for f in files:
# æ£èŠè¡šçŸããã --- (*3)
m = re.search(r'_([a-zA-Z]+)_([0-9]+)\.mp3', f)
if m is None:
print("åŠçããªã:", f)
continue
# äžžã«ãã³ã§å²ã£ãéšåãåŸã --- (*4)
lang = m.group(1)
no = m.group(2)
# ä¿åå
ãã©ã«ãåãæ±ºãã --- (*5)
lang_dir = os.path.join(base_dir, lang)
if not os.path.exists(lang_dir):
os.mkdir(lang_dir)
# ãã¡ã€ã«åãæ±ºå®ããŠã³ã㌠--- (*6)
newfile = os.path.join(lang_dir, f)
shutil.copy(f, newfile)
print("ã³ããŒ:", newfile)
ããã°ã©ã ãå®è¡ããã«ã¯ãIDLEã䜿ãããã³ãã³ãã©ã€ã³ã§ãpython3 bunrui.pyããå®è¡ãããã
ããã°ã©ã ãå®è¡ãããšãèšèªã³ãŒãããšã«ãã©ã«ããäœæããããã®äžã«MP3ãã¡ã€ã«ãã³ããŒãããã
ããã§ã¯ããã°ã©ã ã確èªããŠã¿ãŸãããã(ïŒ1)ã§ã¯globã¡ãœããã䜿ã£ãŠMP3ãã¡ã€ã«(æ¡åŒµåãã.mp3ã)ã®ãã®ãååŸããŠããããã®æç¹ã§ç¹å®ã®æ¡åŒµåã®ãã¡ã€ã«ã«æ¯ãåããŠããããå šãŠã®ãã¡ã€ã«ãååŸãããå Žåã«ã¯ãïŒ.mp3ããšæžããŠãããšããããïŒããšæžãæãããã
(ïŒ2)ã®éšåã§ã¯foræãå©çšããŠåãã¡ã€ã«1ã€1ã€ã«å¯ŸããŠåŠçãè¡ããç¹°ãè¿ãã®äžã§ã¯ã(ïŒ3)ã§æ£èŠè¡šçŸã䜿ã£ãŠãããåŠçãè¡ããæ£èŠè¡šçŸãã¿ãŒã³ã«ãããããªããã°ããã®æšã衚瀺ããŠæ¬¡ã®ãã¡ã€ã«ã«åŠçãç§»ãããã«ããŠããããªããæ£èŠè¡šçŸãã¿ãŒã³ã§ã[a-zA-Z]+ããšæžããšå°æåãšå€§æåã®ã¢ã«ãã¡ãããã®é£ç¶ãæå³ãããã[0-9]+ããšæžããšæ°åã®é£ç¶ãšããæå³ã«ãªãã
(ïŒ4)ã®éšåã§ã¯æ£èŠè¡šçŸã§ãããããéšåæååãåãåºããŠãããæ£èŠè¡šçŸã®ãã¿ãŒã³ã§äžžã«ãã³ã§æ¬ã£ãéšåã(...)ãããããã§æå®ããŠããããã«ãm.group(1)ãm.group(2)ã®ããã«ããŠååŸã§ããããªããããã§ã¯èšèªã³ãŒãã倿°langã«ãããŒã¿çªå·ã倿°noã«ä»£å ¥ããã倿°noã¯äœ¿ã£ãŠããªããããã¡ã€ã«æ°ãå€ãããå Žåãªã©ãããã«çªå·ã«å¿ããŠãã©ã«ããåããããšãã§ããã ããã
(ïŒ5)ã§ã¯ä¿åå ã®ãã©ã«ãåãæ±ºããŠãã©ã«ãããªããã°èªåçã«äœæããããã«ããŠããããããŠ(ïŒ6)ã§ãã¡ã€ã«ãã³ããŒããã
ãªãããã¡ã€ã«ã³ããŒã§ã¯ãªãããã¡ã€ã«ãç§»åãããå Žåã«ã¯ã(ïŒ6)ã®ãshutil.copy(f, newfile)ãã®éšåããshutil.move(f, newfile)ããšä¿®æ£ãããã
ãŸãšã
以äžãä»åã¯æ£èŠè¡šçŸãå©çšããŠããã¡ã€ã«ãããããã®ãã©ã«ãã«åé¡ããæ¹æ³ã玹ä»ãããæ£èŠè¡šçŸã䜿ãããšã§ãã¯ã€ã«ãã«ãŒããªã©åçŽãªåé¡ã§ã¯å¯ŸåŠã§ããªããããªè€éãªã«ãŒã«ã®ãã¡ã€ã«åãæ¯ãåããããšãã§ãããä»åã®ããã°ã©ã ãåèã«ããŠãæ¥åèªååã«åœ¹ç«ãŠãŠã¿ããã
èªç±åããã°ã©ããŒããããã¯ãã©ã«ãŠãããã°ã©ãã³ã°ã®æ¥œãããäŒããæŽ»åãããŠããã代衚äœã«ãæ¥æ¬èªããã°ã©ãã³ã°èšèªããªã§ããã ãããã¹ã鳿¥œããµã¯ã©ããªã©ã2001幎ãªã³ã©ã€ã³ãœãã倧è³å ¥è³ã2004幎床æªèžãŠãŒã¹ ã¹ãŒããŒã¯ãªãšãŒã¿èªå®ã2010幎 OSSè²¢ç®è ç« åè³ãæè¡æžãå€ãå·çããŠãããçŽè¿ã§ã¯ããã·ãŽããã¯ãã©ã PythonèªååŠçã®æç§æž(ãã€ããåºç)ããããã«äœ¿ãã!æ¥åã§å®è·µã§ãã! Pythonã«ããAIã»æ©æ¢°åŠç¿ã»æ·±å±€åŠç¿ã¢ããªã®ã€ããæ¹ TensorFlow2察å¿(ãœã·ã )ãããã³ã¬ã§ãã£ããåŠã¶Python(ãã€ããåºç)ããªã©ã


