0

構造は次のとおりです。

{"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」と言う 1 桁のみの最終出力が得られた場合、値を更新する前にそれを整数に変換するにはどうすればよいですか。

私がしたことは

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

これにより、結果が文字列として取得されます。1桁しかない場合に整数値として保存したい場合は、どうすればよいですか? 私は試した

item['E'] = int(x)

ValueError を取得するには: 基数 10 の int() の無効なリテラル: ''

前もって感謝します

4

3 に答える 3

4

現在の構造が という変数に格納されていると仮定しますdata

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

これは、構造が一貫しており、"E"常に辞書のキーになることを前提としています。

これが Python 辞書ではなく JSON 文字列である場合は、まず JSON を解析する必要があります。

import json
data = json.loads(json_string)
于 2013-03-04T20:57:52.997 に答える
3

これにより、 から数字またはカンマ以外のものはすべて取り除かれEます。

import re
for a in data.values():
    for d in a:
        d['E'] = re.sub(r'[^\d,]', '', d['E'])
于 2013-03-04T21:01:03.273 に答える
0

を使用して解決

 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
于 2013-03-05T17:32:28.853 に答える