2016-08-05 7 views
0

私はpythonテンプレートモジュールを使用して以下を置き換えようとしています。テンプレートモジュールを使用してPython文字列を置き換えることができません

start_date BETWEEN DATEADD(days,-14,'${DATE_YYYY-MM-DD}') AND '${DATE_YYYY-MM-DD}'

私は値を読んで、私は首尾よく行うことができる午前辞書(config_params)にそれを保存するためのConfigParserを使用しています。それから、私は上記のテンプレートに代わる安全な代用をしていますが、何もしないようです。これは、ファイル内の他のパラメータの多くを置き換えますが、たったの$ {DATE_YYYY-MM-DD}

を交換していないようだ私が使用していたコードは以下の通りです:

with open(templateFile, 'r+') as f: 
    temp = Template(f.read()) 
    resultFile = temp.safe_substitute(config_params) 

これは、なぜ上の任意のヘルプ起こっている?それは好きではないのですか?

TemplateFile:

SELECT 
x 
,y 
,z 
,a 
,b 
INTO ${od}.${tab} 
FROM 
mphd.${pd} as h 
WHERE 
a BETWEEN DATEADD(month,-12,'${DATE_YYYY-MM-DD}') AND '${DATE_YYYY-MM- DD}' 
; 

コンフィグファイル:

[GeneralParams] 
od = sandbox 
tab = abcd 
pd = hierarchy_expanded 
DATE_YYYY-MM-DD = 2016-08-05 

config_params:

{'od': 'sandbox', 'DATE_YYYY-MM-DD': '2016-08-05', 'pd': 'hierarchy_expanded', 'tab': 'abcd'} 

結果ファイル:

SELECT 
x 
,y 
,z 
,a 
,b 
INTO sandbox.abcd 
FROM 
mphd.hierarchy_expanded as h 
WHERE 
a BETWEEN DATEADD(month,-12,'${DATE_YYYY-MM-DD}') AND '${DATE_YYYY-MM- DD}' 
; 
+0

スクリプトを実行した後、 'templateFile'の内容、' config_params'の値、 'resultFile'の値を追加するには投稿を編集してください。 –

+0

質問を編集しました。 – coder1416

答えて

1

the docによれば、識別子に続くデフォルトのパターンは[_a-z][_a-z0-9]*です。 safe_substituteの代わりにsubstituteを使用すると、これについて警告があります。

ただし、新しいテンプレートクラスを作成することによって、これを修正することができます

class MyTemplate(Template): 
    idpattern = '[_a-z][_a-z0-9-]*' # Note the extra - 

そして、私たちMyTemplate(またはあなたはそれに名前を付けたいものは何でも)あなたのコードの代わりに、Template)で。

+0

ありがとう!これは問題を解決しました。 – coder1416

関連する問題