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' 
} 

입력 및 템플릿이라는 두 개의 인수를 사용하고 출력을 제공하는 라이브러리 또는 템플릿 엔진이 있습니까? 템플릿은 고정되어 있지 않으므로 코드에서 하드 코딩 할 수 없습니다. 동적이어야합니다.문자열과 템플릿을 비교하여 문자열에서 데이터를 추출합니다.

사용할 수없는 경우 내 코드를 직접 작성하여 구현할 수 있습니까?

답변

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

관련 문제