简体   繁体   中英

how to check whether the comma-separated value in the database is present in JSON data or not using python

I just have to check the JSON data on the basis of comma-separated e_code in the table. how to filter only that data where users e_codes are available in the database:

id         email          age      e_codes
1.         abc@gmail       19     123456,234567,345678
2.         xyz@gmail       31     234567,345678,456789

This is my JSON data

[
  {
    "ct": 1,
    "e_code": 123456,
  },
  {
    "ct": 2,
    "e_code": 234567,
  },
{
    "ct": 3,
    "e_code": 345678,
},
{
    "ct": 4,
    "e_code": 456789,
  },
{
    "ct": 5,
    "e_code": 456710,
  }
]

If efficiency is not an issue, you could loop through the table, split the values to a list by using case['e_codes'].split(',') and then, for each code loop through the JSON to see whether it is present. This might be a little inefficient if your data, JSON, or number of values are long.

It might be better to first create a lookup dictionary in which the codes are the keys:

lookup={}
for e in my_json:
    lookup[e['e_code']] = 1

You can then check how many of the codes in your table are actually in the JSON:

## Let's assume that the "e_codes" cell of the 
## current line is data['e_codes'][i], where i is the line number

for i in lines:
    match = [0,0]
    for code in data['e_codes'][i].split(','):
        try:
            match[0]+=lookup[code]
            match[1]+=1
        except:
            match[1]+=1

    if match[1]>0: share_present=match[0]/match[1]

For each case, you get a share_present , which is 1.0 if all codes appear in the JSON, 0.0 if none of them do and some value between to indicate the share of codes that were present. Depending on your threshold for keeping a case you can set a filter to True or False depending on this value.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM