Created
March 3, 2026 11:35
-
-
Save me-suzy/f005b6f6b89a7ffff223854140124f4d to your computer and use it in GitHub Desktop.
Replace toate caracterele speciale in diacritice UFT-8.py
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import os | |
| BASE_DIR = r'e:\Carte\BB\17 - Site Leadership\Principal\ro' | |
| REPLACEMENTS = { | |
| # ă / Ă | |
| 'ă': 'ă', 'ă': 'ă', 'ă': 'ă', | |
| 'Ă': 'Ă', 'Ă': 'Ă', 'Ă': 'Ă', | |
| # â / Â | |
| 'â': 'â', 'â': 'â', 'â': 'â', | |
| 'Â': 'Â', 'Â': 'Â', 'Â': 'Â', | |
| 'â': 'â', 'Â': 'Â', | |
| # î / Î | |
| 'î': 'î', 'î': 'î', 'î': 'î', | |
| 'Î': 'Î', 'Î': 'Î', 'Î': 'Î', | |
| 'î': 'î', 'Î': 'Î', | |
| # ș mic (virgulă) + ş mic (sedilă) | |
| 'ș': 'ș', 'ș': 'ș', 'ș': 'ș', # ș | |
| 'ş': 'ș', 'ş': 'ș', 'ş': 'ș', # ş (sedilă) | |
| # Ș mare (virgulă) + Ş mare (sedilă) | |
| 'Ș': 'Ș', 'Ș': 'Ș', 'Ș': 'Ș', # Ș | |
| 'Ş': 'Ș', 'Ş': 'Ș', 'Ş': 'Ș', # Ş (sedilă) | |
| # ț mic (virgulă) + ţ mic (sedilă) | |
| 'ț': 'ț', 'ț': 'ț', 'ț': 'ț', # ț | |
| 'ţ': 'ț', 'ţ': 'ț', 'ţ': 'ț', # ţ (sedilă) | |
| # Ț mare (virgulă) + Ţ mare (sedilă) | |
| 'Ț': 'Ț', 'Ț': 'Ț', 'Ț': 'Ț', # Ț | |
| 'Ţ': 'Ț', 'Ţ': 'Ț', 'Ţ': 'Ț', # Ţ (sedilă) | |
| # entități HTML uzuale în text | |
| '"': '"', | |
| ''': "'", | |
| } | |
| # Înlocuim și caracterele fizice cu sedilă cu varianta corectă cu virgulă | |
| RAW_CHAR_REPLACEMENTS = { | |
| 'ş': 'ș', | |
| 'Ş': 'Ș', | |
| 'ţ': 'ț', | |
| 'Ţ': 'Ț', | |
| } | |
| def normalize_content(text: str) -> str: | |
| original = text | |
| # 1. Numeric / named entities → UTF-8 | |
| for src, dst in REPLACEMENTS.items(): | |
| text = text.replace(src, dst) | |
| # 2. Caractere sedilă → virgulă | |
| for src, dst in RAW_CHAR_REPLACEMENTS.items(): | |
| text = text.replace(src, dst) | |
| return text | |
| def main(): | |
| print(f"Încep înlocuirea în: {BASE_DIR}\n") | |
| changed_files = 0 | |
| for root, dirs, files in os.walk(BASE_DIR): | |
| for name in files: | |
| if not name.lower().endswith('.html'): | |
| continue | |
| full_path = os.path.join(root, name) | |
| try: | |
| with open(full_path, 'r', encoding='utf-8') as f: | |
| content = f.read() | |
| except UnicodeDecodeError: | |
| # Dacă ai fișiere mai vechi ISO-8859-2/Windows-1250, poți adăuga aici un fallback. | |
| continue | |
| new_content = normalize_content(content) | |
| if new_content != content: | |
| with open(full_path, 'w', encoding='utf-8') as f: | |
| f.write(new_content) | |
| changed_files += 1 | |
| print(f"✅ Actualizat: {full_path}") | |
| if changed_files == 0: | |
| print("Nu a fost nevoie de nicio modificare (nu s-au găsit entități țintă).") | |
| else: | |
| print(f"\nGata. Au fost actualizate {changed_files} fișiere.") | |
| if __name__ == '__main__': | |
| main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment