将每个文本节点映射到Python中的匿名函数

将每个文本节点映射到Python中的匿名函数,python,dictionary,Python,Dictionary,假设我将以下变量data作为字典,可以从JSON文件解析: 数据={ “导入”:[“mod1\u1251”,“mod\u2412”], “其他\u2512fos字段”:{ “名称”:“2” } } 是否可以将此数据结构中的每个节点映射到匿名函数 例如,一个例子是: data={…}#以上数据 """ map_节点将import、mod1、mod2、其他_字段、name、Jack推送到匿名字符串_fix函数中(这些是我们的节点值)。 返回后,返回被放置在适当的引用中,从而简化了在dict或对象中

假设我将以下变量
data
作为字典,可以从JSON文件解析:

数据={
“导入”:[“mod1\u1251”,“mod\u2412”],
“其他\u2512fos字段”:{
“名称”:“2”
}
}
是否可以将此数据结构中的每个节点映射到匿名函数

例如,一个例子是:

data={…}#以上数据
"""
map_节点将import、mod1、mod2、其他_字段、name、Jack推送到匿名字符串_fix函数中(这些是我们的节点值)。
返回后,返回被放置在适当的引用中,从而简化了在dict或对象中迭代每个节点或k/v的能力。
"""
def字符串\u修复(字符串):
返回“.join([c代表字符串中的c,如果ord(c)<128])。strip()
数据=映射节点(字符串固定,数据)
string\u fix
函数将删除unicode并从字符串中去除空白。不要把样本数据看得太重

然后,将
string\u fix
函数映射到每个节点后,数据将如下所示:

数据={
“进口”:[“mod1”、“mod2”],
“其他fos字段”:{
“名称”:“2”
}
}
这可能是我编写自己的函数的可能性,我只是想问一下,是否有一个固定的解决方案

我到处寻找:

  • json映射每个文本节点
  • Python递归映射字典

    • 我想这回答了你的问题

      #这是您的数据
      数据={
      “进口”:[“mod1”、“mod2”],
      “其他_字段”:{
      “姓名”:“杰克”
      }
      }
      #这里有一个函数:它接受一个字符串作为参数并返回一个字符串
      def剂量测定(参数):
      返回参数上限()
      #这里有黑魔法
      def映射_节点(函数、数据):
      #检查数据的类型
      如果类型(数据)=dict:
      ret={}
      #在字典中,只需迭代并替换键和值
      对于data.items()中的k,v:
      nk=映射节点(func,k)
      nv=映射节点(func,v)
      ret[nk]=nv
      elif类型(数据)==列表:
      ret=[]
      #在列表中,只需迭代并替换值
      对于数据中的v:
      v=映射节点(func,v)
      ret.append(v)
      elif类型(数据)==str:
      ret=“”
      #在字符串中,只替换值
      ret=func(数据)
      elif类型(数据)==int:
      #在整数中,只需将其转换为字符串
      ret=映射节点(func、str(数据))
      #在这里,您可以添加您可能需要的所有其他类型
      其他:
      #如果尚未识别类型,则引发异常
      引发异常(“类型”+str(类型(数据))+“尚未实现!”)
      回程网
      打印(数据)
      数据=地图节点(doSomething,data)
      打印(数据)
      
      这将产生:

      {'import': ['mod1', 'mod2'], 'other_fields': {'name': 'Jack'}}
      {'IMPORT': ['MOD1', 'MOD2'], 'OTHER_FIELDS': {'NAME': 'JACK'}}
      

      通过提供新的输入并稍加调整以允许Python解析,输出为:

      {'import': ['mod1ቑ', 'mod╅'], 'other ┲fos fields': {'name': 2}}
      {'import': ['mod1', 'mod'], 'other fos fields': {'name': '2'}}
      

      看看这个,看看我的代码在起作用。

      你能举一个例子,说明在
      data=map\u节点(str,data)
      之后
      data
      会包含什么吗?所以,如果我理解正确,你是在寻找一种算法,它可以接受所有字符串(键、值、列表元素…)并使用str函数就地处理它们?如果这就是你的意思,你能定义你想要传递的函数的原型吗?它是否应该将一个字符串参数作为输入并返回一个字符串作为输出?@Grismar我现在就这样做,我应该使用我主要解决的问题。谢谢你的提醒。
      “mod\u2”
      :这给了我一个错误:
      “截断\uxxx转义”
      。请修复您的代码片段好吗?这同样适用于
      “其他\u2fos字段”
      。那么,是否要将
      2
      转换为字符串?