2011-05-24 3 views
0

具体的には、私はPythonスクリプトをJavaヘルパーメソッドに変換しています。ここでは抜粋です(簡単にするために少し修正しました)。Pythonのprintfハッシュ置換に相当するJavaはありますか?

# hash of values 
vals = {} 
vals['a'] = 'a' 
vals['b'] = 'b' 
vals['1'] = 1 

output = sys.stdout 
file = open(filename).read() 

print >>output, file % vals, 

だから、ファイルに、私はハッシュキーで置換したい%(a)は、%(b)は、%(1)などがあります。私はAPIを熟読しましたが、何も見つかりませんでした。私はそれを見逃しましたか、またはJava APIにこのようなものが存在しませんでしたか?

+0

どのバージョンのPythonを使用していますか? –

+0

@ダナ:問題ではありません。最後のいくつかのバージョンのいずれかがこれをサポートしています。 –

+0

私はバージョンが2.4 – predhme

答えて

1

純粋なJavaソリューションを見つけることができます。これは、あなたが望むものをそのまま使えるようにするものです。これを考慮して

、最良の答えはあなたのファイルに表示されるPythonのフォーマット文字列の複雑さと多様性に依存します:

  • 彼らはシンプルかつ多様していない場合は、最も簡単な方法はである可能性があります何かコードを書いてください。

  • 逆の場合は、ほんの少しの作業で必要な結果を得る方法の1つがembedding Jython into your Java programです。これにより、Pythonの文字列フォーマット演算子(%)を直接使用することができます。さらに、Python辞書(vals)のように、Java Mapを与えることができます。

+0

最初のステートメントはtrueです。したがって、私は別の図書館などを輸入したくなかった。私たちには、スクリプトを実行するために外部システムに通知するだけの既存のJavaアプリケーションがあります。その代わりに、スクリプトをシステムにインポートして依存関係を削除しています。私はおそらくはるかに速い任意の外部のソリューションを使用してユニットテストでHashMapを使用する静的なフォーマットのメソッドを書くことができました:)ありがとう – predhme

2

追加のテンプレートライブラリを使用せずに直接行うことはできません。私はStringTemplateをお勧めします。非常に軽量、easy to use、非常に最適化され、堅牢です。

+0

素晴らしいライブラリーのように見えますが、今後のプロジェクトではこれを私の記録に残しておきます。これは比較的単純な再実装であるため、私は自分でコードを作成します。 – predhme

関連する問題