Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save me-suzy/f005b6f6b89a7ffff223854140124f4d to your computer and use it in GitHub Desktop.

Select an option

Save me-suzy/f005b6f6b89a7ffff223854140124f4d to your computer and use it in GitHub Desktop.
Replace toate caracterele speciale in diacritice UFT-8.py
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