import logging import re from textblob import TextBlob # Pre-compile the regular expression PERCENTAGE_PATTERN = re.compile(r'^\d+%?$') def setup_logger(log_file=None, level=logging.INFO, overwrite_handler=False): # Create a logger and set the logging level logger = logging.getLogger() logger.setLevel(level) # if logger already has handlers, just return it if logger.hasHandlers() and not overwrite_handler: return logger # Define the log message format log_format = "%(asctime)s [%(levelname)s] %(message)s" date_format = "%Y-%m-%d %H:%M:%S" formatter = logging.Formatter(log_format, datefmt=date_format) # Create a file handler and set the file path and format if log_file: file_handler = logging.FileHandler(log_file) file_handler.setLevel(level) file_handler.setFormatter(formatter) logger.addHandler(file_handler) # Create a console handler and set the format console_handler = logging.StreamHandler() console_handler.setLevel(level) # Set the formatter for the handlers console_handler.setFormatter(formatter) # Add the handlers to the logger logger.addHandler(console_handler) return logger def is_percentage_or_number(s): # re.match returns None if the string does not match the pattern return PERCENTAGE_PATTERN.match(s) is not None def correct_spelling(text): words = text.split() corrected_words = [] for word in words: if is_percentage_or_number(word): corrected_words.append(word) else: blob = TextBlob(word) # create a TextBlob object corrected_word = blob.correct() # use the correct method to correct spelling corrected_words.append(str(corrected_word)) # convert corrected word back to string corrected_text = ' '.join(corrected_words) return corrected_text