DedSec Project

04 jsonl filter — DedSec Project

import json def filter_rows(lines, min_level=2): accepted, errors = , for number, line in enumerate(lines, 1): try: row = json.loads(line) if not isinstance(row, dict) or…

Source reference

import json

def filter_rows(lines, min_level=2):
    accepted, errors = [], []
    for number, line in enumerate(lines, 1):
        try:
            row = json.loads(line)
            if not isinstance(row, dict) or type(row.get('level')) is not int:
                raise ValueError('invalid schema')
            if row['level'] >= min_level:
                accepted.append(row)
        except (json.JSONDecodeError, ValueError):
            errors.append(number)
    return accepted, errors

if __name__ == '__main__':
    good, errors = filter_rows(['{"level":1}', '{"level":3}', 'oops'])
    assert [x['level'] for x in good] == [3] and errors == [3]
    print(good, errors)