我有一个dicts列表,输入是什么。有些字段是HTML编码的。
[
{
CONTENT:"<title>ABC</title>",
bla: "Text",
x: "<span>Test</span>"
},
{
CONTENT:"<b>def</b>",
bla: "32",
x:"<div><b>Test</b></div>"
},
...
]
列表fields
包含要使用HTML-Stripper _strip
转换的字段:
fields = ["x", "CONTENT"]
将这些字段的值(在本例中为CONTENT
和x
)映射到_strip(CONTENT)
各自_strip(x)
的最佳方式是什么。
我当前的代码看起来像这样,但我有一些疑问,因为列表和dicts是通过引用传递的,而且这不是pythonic的方法。
elements = map(lambda x: f(fields, x), elements)
def f(fields, element):
for field in fields:
element[field] = _strip(element[field])
return element
预期结果如下:
[
{
CONTENT:_strip("<title>ABC</title>"),
bla: "Text",
x: _strip("<span>Test</span>")
},
{
CONTENT:_strip("<b>def</b>"),
bla: "32",
x:_strip("<div><b>Test</b></div>")
},
...
]
评估:
[
{
CONTENT:"ABC",
bla: "Text",
x: "Test"
},
{
CONTENT:"def",
bla: "32",
x:"Test"
},
...
]
我不是要求_strip
- 函数,而是要以正确的方式来映射它。
答案 0 :(得分:0)
这是一种没有编辑element
的方法,只使用了解理解:
[{k:(_strip(v) if k in fields else v) for k,v in element.items()} for element in content]
请注意,这不是Pythonic,因为它是一个单行,但您可以根据需要将其拆分。