Spaces:
Running
Running
| import json | |
| import re | |
| def is_json(myjson): | |
| """ | |
| Checks whether a given string is a valid JSON. | |
| Parameters: | |
| myjson (str): The string to be checked. | |
| Returns: | |
| bool: True if the string is a valid JSON, False otherwise. | |
| """ | |
| try: | |
| _ = json.loads(myjson) | |
| except ValueError: | |
| return False | |
| return True | |
| def is_json_inside(text): | |
| """ | |
| Checks whether a given string contains valid JSON(s). | |
| Parameters: | |
| text (str): The string to be checked. | |
| Returns: | |
| bool: True if the string contains valid JSON(s), False otherwise. | |
| """ | |
| text = re.sub(r"\s+", " ", text) | |
| matches = re.findall(r"\{.*?\}", text) | |
| for match in matches: | |
| if is_json(match): | |
| return True | |
| return False | |
| def extract_jsons(text): | |
| """ | |
| Extracts all valid JSON objects from a given string. | |
| Parameters: | |
| text (str): The string from which JSON objects are to be extracted. | |
| Returns: | |
| List[Dict]: A list of all extracted JSON objects. | |
| """ | |
| text = re.sub(r"\s+", " ", text) | |
| matches = re.findall(r"\{.*?\}", text) | |
| parsed_jsons = [] | |
| for match in matches: | |
| try: | |
| json_object = json.loads(match) | |
| parsed_jsons.append(json_object) | |
| except ValueError: | |
| pass | |
| return parsed_jsons | |
| def extract_code(text): | |
| """ | |
| Extracts all code blocks encapsulated by '```' from a given string. | |
| Parameters: | |
| text (str): The string from which Python code blocks are to be extracted. | |
| Returns: | |
| List[str]: A list of all extracted Python code blocks. | |
| """ | |
| text = re.sub("```python", "```", text) | |
| matches = re.findall(r"```(.*?)```", text, re.DOTALL) | |
| parsed_codes = [] | |
| for match in matches: | |
| parsed_codes.append(match) | |
| return parsed_codes | |
| class AttributedDict(dict): | |
| """ | |
| A dictionary class whose keys are automatically set as attributes of the class. | |
| The dictionary is serializable to JSON. | |
| Inherits from: | |
| dict: Built-in dictionary class in Python. | |
| Note: | |
| This class provides attribute-style access to dictionary keys, meaning you can use dot notation | |
| (like `my_dict.my_key`) in addition to the traditional bracket notation (`my_dict['my_key']`). | |
| """ | |
| def __init__(self, *args, **kwargs): | |
| super().__init__(*args, **kwargs) | |
| def __setattr__(self, key, value): | |
| self[key] = value | |
| def __getattr__(self, key): | |
| if key in self: | |
| return self[key] | |
| raise AttributeError | |
| def __delattr__(self, key): | |
| del self[key] | |
| # check whether the key is string when adding the key | |
| def __setitem__(self, key, value): | |
| if not isinstance(key, str): | |
| raise ValueError("The key must be a string") | |
| super().__setitem__(key, value) | |
| def update(self, *args, **kwargs): | |
| for key, value in dict(*args, **kwargs).items(): | |
| self[key] = value | |