2016-07-14 9 views
0

リストを解析して、bashスクリプトによって返された個々のイメージを取得しようとしています(pyスクリプトのリストエラーに格納されています)。どのように私はこれを "re"で行うことができますか?reを使用してPythonでリストを解析する方法

bashスクリプト

#!/bin/bash 
value(){ 
for entry in * 
do 
if expr "$(file -b $entry)" : 'JPEG ' >/dev/null; 
then 
    echo -e "$entry" 
fi 
done 
} 
value 

Pythonコード

import subprocess 
errors = [subprocess.check_output(['/black.sh'])] 
print errors 

出力

11_37_24.jpeg 
11_38_02.jpeg 
11_39_56.jpeg 
11_40_20.jpeg 
11_40_32.jpeg 
11_45_03.jpeg 

リスト"errors"は長さ1の文字列を割り当てなっている:

errors = ["11_37_24.jpeg 11_38_02.jpeg 11_39_56.jpeg 11_40_20.jpeg 11_40_32.jpeg 11_45_03.jpeg"] 

しかし、私は、htmlページでそれを使用するために個別にそれらのイメージを取得したいです。 "re"で私はどうすればいいのですか?他の選択肢はありますか?

私は(あなたが与える例入力に基づいて)いくつかの仮定を作る
+2

あなたが本当に再したいですか? 'errors.split()'で十分ではないでしょうか? –

+3

ファイル名にスペースが含まれていない限り、[errors = subprocess.check_output(['/black.sh']).split() '](https://ideone.com/9x7AyN)のように見えます。 –

+1

@StephanW。それはスペースを含むファイル名を壊すでしょう。 'errors.split( '\ n')'は安全です。ファイル名の最後に '\ 0'を追加し、' .split( '\ 0') 'を使用する方が良いでしょう。 – Bakuriu

答えて

0

  • ファイル名はファイル名のみに数字とアンダースコア(私は正規表現で\wを使用することができます)
  • 語を含むがあります

    :常にすべてのファイルは、JPEGファイル

コードでアンダースコア(スペースなし)

  • で連結
    import re 
    
    errors = ["11_37_24.jpeg 11_38_02.jpeg 11_39_56.jpeg 11_40_20.jpeg 11_40_32.jpeg 11_45_03.jpeg"] 
    
    re.findall('\w+\.jpeg', errors[0]) 
    ['11_37_24.jpeg', '11_38_02.jpeg', '11_39_56.jpeg', '11_40_20.jpeg', '11_40_32.jpeg', '11_45_03.jpeg'] 
    

    私の前提がプロジェクトにとって間違っている場合、reはおそらく行く方法ではありません。

    EDIT

    OPは(コメントで与えられた)次のコードを使用:

    errors[0].split('\n') 
    
  • +0

    あなたの前提は正しく、それはまともに働いています。ありがとう!! – oldDoctor

    関連する問題