Spaces:
Sleeping
Sleeping
| import re | |
| def clean_text(text: str) -> str: | |
| if not text or not text.strip(): | |
| return "" | |
| # Nối các từ bị gãy ngang do xuống dòng | |
| text = re.sub(r'(\w+)-\s*\n\s*(\w+)', r'\1\2', text) | |
| # Loại bỏ các ký tự điều khiển không mong muốn, nhưng giữ lại các dấu câu thông thường | |
| text = re.sub(r'[\x00-\x08\x0b\x0c\x0e-\x1f\x7f]', '', text) | |
| # Xóa các ký tự không nhìn thấy và các ký tự đặc biệt như zero-width space và BOM | |
| text = text.replace('\u200b', '').replace('\ufeff', '') | |
| # Chuẩn hóa khoảng trắng | |
| text = re.sub(r'[ \t]+', ' ', text) | |
| text = re.sub(r' +\n', '\n', text) | |
| text = re.sub(r'\n +', '\n', text) | |
| # Giới hạn tối đa 2 dòng trống liên tiếp | |
| text = re.sub(r'\n{3,}', '\n\n', text) | |
| # Sửa lỗi dư khoảng trắng trước dấu câu | |
| text = re.sub(r'\s+([.,;:!?])', r'\1', text) | |
| return text.strip() |