【问题标题】:removing characters from a value in dictionary in python从python字典中的值中删除字符
【发布时间】:2013-02-19 02:16:21
【问题描述】:

结构如下:

{"A": [{
            "A": "",
            "B": "2",
            "C": "3QWE",
            "D": 1800,
            "E": null,
            "F": null
        },
        {
            "A": "",
            "B": "2",
            "C": "XYT17",
            "D": 1800,
            "E": "3, 1*",
            "F": null
        },
        {
            "A": "",
            "B": "N8HTY",
            "C": "XYT17",
            "D": 1800,
            "E": "7,6,(5)**",
            "F": null
        },
        {
            "A": "",
            "B": "1AJ21",
            "C": "XYT17",
            "D": 1800,
            "E": "7,6,5",
            "F": null
        }
       ],
   "B": [{
            "A": "",
            "B": "LS231",
            "C": "XYT17",
            "D": 1800,
            "E": "1,2,3",
            "F": null
        },
        {
            "A": "",
            "B": "22GHE",
            "C": "XYT17",
            "D": 1800,
            "E": "3, 1*",
            "F": null
        }
      ]
}

如果存在,我希望从键“E”的值中删除“*”和“(”和“)” “E”的输出应如下所示

即"E":"7,6,(5)**" ---> "E":"7,6,5"

  "E":"3, 1*" ---> "E":"3,1"



 "E":"1,2,3" stays the same

另外,如果在处理“1*”之后,我的最终输出只有一位数字说“1”,那么我如何在更新值之前将其转换为整数。

我做的是

x=copy.copy(item['E']) 
for char in '*':              
  x = x.replace(char,'') 
item['E']=x

这让我得到一个字符串的结果。 现在,如果我希望它存储为一个整数值,如果只有一个数字,那么应该怎么做? 我试过了

项目['E'] = int(x)

获取 ValueError: invalid literal for int() with base 10: ''

提前致谢

【问题讨论】:

  • 这个结构是python字典还是JSON?我想知道“空”值。
  • 它是一个 python dictionary 转储为 json

标签: python regex list dictionary python-2.7


【解决方案1】:

假设您当前的结构存储在一个名为 data 的变量中:

for arr in data.values():
    for item in arr:
        item['E'] = item['E'].replace('(', '').replace(')', '').replace('*', '')

这假设结构是一致的,"E" 将始终是字典中的键。

如果这是一个 JSON 字符串而不是 Python 字典,您首先需要解析 JSON:

import json
data = json.loads(json_string)

【讨论】:

    【解决方案2】:

    这将从E 中删除除数字或逗号以外的任何内容:

    import re
    for a in data.values():
        for d in a:
            d['E'] = re.sub(r'[^\d,]', '', d['E'])
    

    【讨论】:

      【解决方案3】:

      解决了

       x=copy.copy(item['E']) 
       for char in '()*':              
            x = x.replace(char,'') 
      
      
       z = len(x)
       if z == 1:
            item['E'] = int(x)
        else:
           item['E'] = x
      

      【讨论】:

        猜你喜欢
        • 2017-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-04
        • 2021-02-13
        相关资源
        最近更新 更多