2016-06-24 20 views
-1

Jinjaにリストを渡して、選択フィールドの値を繰り返し処理することができます。私は正しく選択フィールドを移入するために使用されるリストを正しく構築するのに苦労しています。フラスコ内のファイルを正しく読み込む方法

私が持っているデータは、テキストファイルから読み込んだ文字列のリストです。テキストファイルのデータは次の形式です。

['Afghanistan', 'Albania', 'Algeria'] 

私はジンジャーテンプレートでこれらの要素を繰り返し、ドロップダウンリストに入力したいと考えています。私の神社テンプレートは、この

<select name="country"> 
    {% for country in countryList %}  
     <option value="">{{country}}</option> 
    {% endfor %} 
</select> 

のように、私は一度に一つの文字を読まれるファイル

with open(filename, 'r') as f:   
     data_list = f.read().replace('\n', ' ') 
country_list = zip(data_list) 

return render_template('signup.html', countryList= country_list) 

からではなく、神社のすべてを読み込むためにこのような何かを試してみました見えます。 私はこの

lines = tuple(open(filename, 'r')) 

を試してみましたが、しかし、それはどちらかの問題を解決していません。選択フィールドでは、私は唯一の「[」私はそれが神社やフラスコの問題ではありません理解

with open(filename, 'r') as f:   
     array = [] 
     for line in f: 
      array.append(line) 


with open(filename, 'r') as f: 
    data_list = []  
    data_list = f.read().replace('\n', ' ') 

を試してみました

他のものを参照してください。しかし、それがリストであるようにテキストファイルからデータを正しく読み込む方法がわからない。テキストファイルの問題を示唆することができるものがありますか?

+0

テキストファイルの形式を制御できますか? –

+0

はい、フォーマットを変更できます – jas

答えて

0

変更フォーマットこれにご入力ファイルの:

Afghanistan 
Albania 
Algeria 

次に、あなたのコードは次のようになります。

with open(filename, 'r') as f:   
    country_list = [line.strip() for line in f] 

return render_template('signup.html', countryList= country_list) 

あなたのテンプレートファイルは、その後、変更なしで動作するはずです。

+0

私はその形式に変更して動作しています。ありがとう! – jas

0

data_liststringであるため、イテレータは各文字を処理しています。リストを取得するには、eval(data_list)を実行することができますが、これは危険な可能性があります。各値は、改行で区切りされている場合は、値の間にいくつかのdeliminatorで、別の方法でテキストファイルを構築する必要があり、あなたは、例えば、f.read().split('\n')data_listを設定することができ、すなわち:

Afghanistan 
Albania 
Algeria 
+0

ファイル形式を変更しています。ありがとう! – jas

関連する問題