是否有Java等效的Python的printf哈希替换?

时间:2011-05-24 17:42:59

标签: java python

具体来说,我正在将python脚本转换为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中不存在这样的东西?

2 个答案:

答案 0 :(得分:2)

如果没有其他模板库,则无法直接执行此操作。我推荐StringTemplate。非常轻量级,easy to use,非常优化和强大。

答案 1 :(得分:1)

我怀疑你会找到一个纯粹的Java解决方案,它可以完全满足您的需求。

考虑到这一点,最佳答案取决于文件中出现的Python格式化字符串的复杂性和多样性:

  • 如果它们很简单而且没有多变,最简单的方法就是自己编写代码。

  • 如果情况恰恰相反,那么通过embedding Jython into your Java program获得您想要的结果的方法之一就是{{3}}。这将使您能够直接使用Python的字符串格式化运算符(%)。更重要的是,你将能够为它提供一个Java Map,就好像它是一个Python字典(代码中为vals)。