我遇到了一个非常简单的问题,无法解决这个问题。
我正在使用str.format
在dict
替换中传递的用于该格式的函数中创建一个字符串。我想创建字符串并使用值将其格式化(如果已传递),否则将其留空。
防爆
kwargs = {"name": "mark"}
"My name is {name} and I'm really {adjective}.".format(**kwargs)
应该回来
"My name is mark and I'm really ."
而不是抛出一个KeyError
(如果我们什么都不做会发生什么)。
令人尴尬的是,对于这个问题,我什至无法提出一个优雅的解决方案。我想我可以通过不使用来解决此问题str.format
,但如果可能的话,我宁愿使用内置的(主要是我想要的功能)。
注意:我事先不知道将使用什么键。如果有人包含密钥但未将其放入kwargs字典中,我将尝试优雅地失败。如果我以100%的准确度知道将查找哪些键,则只需填充所有键并完成操作即可。
您可以遵循PEP 3101中的建议,并使用子类Formatter:
import string
class BlankFormatter(string.Formatter):
def __init__(self, default=''):
self.default=default
def get_value(self, key, args, kwds):
if isinstance(key, str):
return kwds.get(key, self.default)
else:
return string.Formatter.get_value(key, args, kwds)
kwargs = {"name": "mark", "adj": "mad"}
fmt=BlankFormatter()
print fmt.format("My name is {name} and I'm really {adj}.", **kwargs)
# My name is mark and I'm really mad.
print fmt.format("My name is {name} and I'm really {adjective}.", **kwargs)
# My name is mark and I'm really .
从Python
3.2开始,您可以使用.format_map作为替代:
class Default(dict):
def __missing__(self, key):
return '{'+key+'}'
kwargs = {"name": "mark"}
print("My name is {name} and I'm really {adjective}.".format_map(Default(kwargs)))
打印:
My name is mark and I'm really {adjective}.
因此,我目前正在尝试找出,如果提供的数据模型不包含标记,是否可以保留该值。我知道,但这不适用于FreeMarker标记。 基本上,我想做的是:
一旦我的jqgrid中的单元格是使用格式选项格式化的货币:{decimal分隔符:".",千分隔符: ",", decimalPlace: 2,前缀: "$ ",defaultValue:"} 当我有一个值时就是这种情况,但如果我没有特定字段网格的值,则默认值为0.00美元,我希望将其保留为空,而不是填充默认值,即0.00美元 我该怎么做?在查找了一些问题后,我使用了自定义格式化程序 在这种情况下
问题内容: 在我的ASP.NET MVC应用程序中,我希望用户将值添加到文本框中,然后按Ajax.ActionLink。我想做这样的事情: Ajax.ActionLink(“ Go”,“ Action”,“ Controller”,新的{value = textbox1.value}) 还是我还能如何使此文本框值返回到我的操作?jQuery的? 问题答案: 您可以使用AJAX $ .get方法运行
问题内容: Docker 1.9允许将参数传递给dockerfile。参见链接:https : //docs.docker.com/engine/reference/builder/#arg 我该如何在ENTRYPOINT指令中传递相同的药品? 我的dockerfile有 ARG $ Version = 3.1 ENTRYPOINT /tmp/folder-$Version/sample.sh开始
问题内容: 我在导入带有熊猫的JSON文件时遇到一些困难。 这是我得到的错误: 文件结构是这样简化的: 它来自Coursera的华盛顿大学的机器学习课程。您可以在这里找到文件。 问题答案: 尝试 该文件仅包含键值为标量的键值对。您可以使用将其转换为数据框。 您还可以执行以下操作: 现在数据就是字典。您可以将其传递给数据框构造函数,如下所示:
两个问题。 我有User和Note类。用户可以有许多笔记。如何通过Thymeleaf显示属于用户的每个便笺的id?th:text=“${u.notes.id}”不起作用 我有一个表(见图),其中包含每个具有布尔isUserChecked值的用户的复选框,下面是删除选中用户的按钮。Thymeleaf更正显示isUserChecked值的状态。Delete按钮在手动选中checkbox时不起作用,但在