2016-11-21 13 views
1

2つのファイルをチェックし、特定のフィールドが一致するとregexと比較するためにループを作成しようとしています。Python - 正規表現を使って2つのファイルのループをループする

avi file 
TVShowName.S01E01.W.DVDRip.XviD.avi 
TVShowName.S01E02.W.DVDRip.XviD.avi 
TVShowName.S01E03.W.DVDRip.XviD.avi 

srt 
tvShowName.S01E01.episodename.DVDRip.XviD.srt 
tvShowName.S01E02.episodename.DVDRip.XviD.srt 
tvShowName.S01E03.episodename.DVDRip.XviD.srt 

ループがなければ、ファイルにマッチして魔法を起こすことができます。ループを使用すると、最初の行にしか到達しません。

TVShowName.S01E01.W.DVDRip.XviD.avi 
TVShowName.S01E01.W.DVDRip.XviD.srt 

コード:

f1 = open('avi', 'r') 
f2 = open('srt', 'r') 
f3 = open ('merge', 'a') 
for avi in f1: 
    m = re.search(".*([Ss][0-20].[eE][0-24].)+.*", avi) 

    for sub in f2: 
     n = re.search(".*([Ss][0-20].[eE][0-24].)+.*", sub) 
     if m.group(1) == n.group(1): 

      str_avi = str(m.group(0)) 
      #print str_avi 

      ext_srt = str_srt.split('.') 
      ext_avi = str_avi.split('.') 

      #print ext_avi 
      #conv_str = str(m.group(0)) 
      merge = str_avi.replace(ext_avi[-1],ext_srt[-1]) 
      print merge 
      f3.write(merge) 
f3.close() 
+0

ファイルの入力を追加できますか? –

+0

提供されているコードに 'str_srt'を定義していません – asongtoruin

+0

出力はすでにポストメイトにあります。私はまだそれが間違って取得するか分からない –

答えて

0

私は、これはあなたが望んでいた出力であれば、完全にはわかりません。私は十分な評判ポイントがないのでコメントを追加できません。

import glob 
import re 
avifiles = [] 
srtfiles = [] 
for afile in glob.glob('*.avi'): 
    avifiles.append(afile) 
for sfile in glob.glob('*.srt'): 
    srtfiles.append(sfile) 
#f1 = open('avi', 'r') 
#f2 = open('srt', 'r') 
f3 = open ('merge', 'a') 
for avi in avifiles: 
    m = re.search(".*([Ss][0-20].[eE][0-24].)+.*", avi) 

for sub in srtfiles: 
    n = re.search(".*([Ss][0-20].[eE][0-24].)+.*", sub) 
    if m.group(1) == n.group(1): 

     str_avi = str(m.group(0)) 
     str_srt = str(n.group(0)) 

     ext_srt = str_srt.split('.') 
     ext_avi = str_avi.split('.') 

     #print ext_avi 
     #conv_str = str(m.group(0)) 
     merge = str_avi.replace(ext_avi[-1],ext_srt[-1]) 
     print merge 
     f3.write(merge+"\n") 
f3.close() 
+0

私は再びスクリプトを書きました。それは今働いている。私はちょうどいくつかの調整をしています、私はそれを投稿します。 –

0

私は以下のコードを作成して動作しているようです。私の次のステップは、ビデオエクステンションを追加することです。しかし、それは簡単なはずです。 皆さん、助けてくれてありがとう!

import re, os, sys, itertools 

str_avi = '' 
split_avi = '' 
global zzz 
lista_avi = [] 
lista_srt = [] 
lista_final = [] 
os.chdir('.') 
f1 = os.listdir(".") 


for full in f1: 
    avi = re.search(".*([Ss][0-9].[eE][0-9].)+.*(...$)", full) 
    if avi: 

     if avi.group(2) == 'avi': 
      lista_avi.append(avi.group(0)) 
     elif avi.group(2) == 'srt': 
      lista_srt.append(avi.group(0)) 
     else: 
      pass 
    else: 
     print "Nenhum Arquivo localizado!"  

for f,b in itertools.izip(lista_avi,lista_srt): 
    data_avi = f.split('.')  
    data_srt = b.split('.') 
    data_regx_avi = re.search(".*([Ss][0-9].[eE][0-9].)+.*(...$)", f) 
    data_regx_srt = re.search(".*([Ss][0-9].[eE][0-9].)+.*(...$)", b) 
    for x in lista_srt: 
     data_regx_srt = re.search(".*([Ss][0-9].[eE][0-9].)+.*(...$)", x) 
     if data_regx_avi.group(1) == data_regx_srt.group(1): 
      print 'Arquivo video:', data_regx_avi.group(0) 
      print 'Arquivo sub: ', f.replace(data_avi[-1],data_srt[-1]) 
      #lista_final.append(f.replace(data_avi[-1],data_srt[-1])) 
      xx = f.replace(data_avi[-1],data_srt[-1]) 
      os.rename(x, xx) 
関連する問題