python - 如何替换 kwargs 键中的特定子字符串?
问题描述
我需要替换字典键值中的特定子字符串。所以:
def some_func(name, **kwargs):
## Do stuff ##
print(f"<{name}", *(f"{key}={value}" for key, value in kwargs.items()), ">")
kwargs = {'foo__':'bar', 'foo_bar':'baz'}
some_func(name='some_name', kwargs)
# Output should be:
<some_name foo=bar foo-bar=baz >
#
因此,每个key
in都kwargs
需要替换为:
{'foo':'bar', 'foo-bar':'baz'}
本质上是key.replace('__', '')
和key.replace('_', '-')
。
我试过为此使用字典:
key_to_replace = {'__':'', '_', '-'}
print(f"<{name}", *(f"{key.replace(key, value for key, value in key_to_replace.items())}={value}" for key, value in kwargs.items()), ">")
但它不起作用,它说Generator Expression must be parenthesized
我试过括号key, value for key, value in key_to_replace.items()
,但它给出了SyntaxError
。
我该怎么做呢?
解决方案
尝试:
def some_func(name, **kwargs):
# replace the __ and _ accordingly:
kwargs = {
k.replace("__", "").replace("_", "-"): v for k, v in kwargs.items()
}
print(f"<{name}", *(f"{key}={value}" for key, value in kwargs.items()), ">")
kwargs = {"foo__": "bar", "foo_bar": "baz"}
some_func(name="some_name", **kwargs) # <-- put ** here
印刷:
<some_name foo=bar foo-bar=baz >
推荐阅读
- list - 如何通过列表中的索引从元组中选择元素?
- java - 将 JAR 放入 JVM 库与项目库有什么区别?
- android - 如何使用 ffpeg 在视频上正确添加适合 XY 的水印图像
- python - 如何读取和操作字典和文件 python 2.7
- excel - Excel Range.Find 没有按照我想象的方式工作
- pdf - 使用 Itext 填充 PDF 字段
- laravel - Laravel 配置:清除导致崩溃
- webstorm - WebStorm,无法抑制对未定义函数的检查
- java - 在 IntellIJ 中找不到 javafx 的依赖项
- python - 烧瓶不工作 Windows 7