0
str_1 = "Hi, my name is Kadamb Kaluskar. I live in India." 

str_2 = "Hi, my name is {{first_name}} {{last_name}}. I live in {{country_name}}." 

output = { 

    'first_name' : 'Kadamb', 
    'last_name' : 'Kaluskar', 
    'country_name' : 'India' 
} 

入力とテンプレートの2つの引数をとり、出力を与えるライブラリエンジンまたはテンプレートエンジンはありますか?テンプレートは固定されていないので、コードでハードコーディングすることはできません。動的である必要があります。文字列をテンプレートと比較して文字列を抽出する

利用できない場合は、自分のコードを記述することでどのように実装できますか?

答えて

1
from pprint import pprint 
import re 

str_1 = "Hi, my name is Kadamb Kaluskar. I live in India." 

str_2 = "Hi, my name is {{first_name}} {{last_name}}. I live in {{country_name}}." 

opening_curlies = [m.start() for m in re.finditer('{{', str_2)] 
opening_curlies = opening_curlies + [len(str_2)] 
closing_curlies = [m.end() for m in re.finditer('}}', str_2)] 
closing_curlies = [0] +closing_curlies 

templates = [str_2[closing_curlies[idx]:opening_curlies[idx]].strip() for idx in range(len(opening_curlies)) if (str_2[closing_curlies[idx]:opening_curlies[idx]]!=' ' and str_2[closing_curlies[idx]:opening_curlies[idx]]!='')] 

str_1_trimmed = str_1 
str_2_trimmed = str_2 
for template in templates: 
    str_1_trimmed = str_1_trimmed.replace(template,'').replace(' ',' ').strip() 
    str_2_trimmed = str_2_trimmed.replace(template, '').replace(' ',' ').strip() 
vals = str_1_trimmed.strip().split(' ') 
keys = str_2_trimmed.strip().split(' ') 

output_param = {} 
for item_idx in range(len(keys)): 
    output_param[keys[item_idx]] = vals[item_idx] 

pprint (output_param) 

結果:

{'{{country_name}}': 'India', 
'{{first_name}}': 'Kadamb', 
'{{last_name}}': 'Kaluskar'} 
+0

が、私の要求出力が異なっています。 – kadamb

+0

@kadambは必要な出力ではありませんか? – Yugi

+0

いいえ、出力dictが必要な出力です。str_1から詳細を抽出したいです。 – kadamb

関連する問題