Jak wyczyścić tekst z niepożądanych znaków - "krzaczków"?

Jak wyczyścić tekst z niepożądanych znaków - "krzaczków"?
lofix
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wdzydze
0

Cześć. Znajomy poprosił mnie o pomoc przy starej stronie internetowej. Przez ostatnie ćwierć wieku strona migrowała, zmieniali się opiekunowie, serwery.
Finalnie na stronie zostały w tekście "krzaczki" (chyba po nieudolnym kodowaniu na UTF-8 z innego).
Próbowałem w ten sposób, ale niestety z niezbyt wymiernym efektem:

Kopiuj
import re

def napraw_bledy_znakow(text):
    zamiana_map = {
        'Âą': 'ą',  # "Âą" na "ą"
        'Âę': 'ę',  # "Âę" na "ę"
        'Âś': 'ś',  # "Âś" na "ś"
        'Âż': 'ż',  # "Âż" na "ż"
        'Âź': 'ź',  # "Âź" na "ź"
        'Âł': 'ł',  # "Âł" na "ł"
        'Âń': 'ń',  # "Âń" na "ń"
        'Âź': 'ź',  # "Âź" na "ź"
        'ó': 'ó',  # "ó" na "ó"
        'Ç': 'ć',  # "Ç" na "ć"
        'Ä': 'ą',  # "Ä" na "ą"
        'ñ': 'ń',  # "ñ" na "ń"
        'Ù': 'u',  # "Ù" na "u"
        'é': 'é',  # "é" na "é"
        'á': 'á',  # "á" na "á"
        'á': 'á',  # "á" na "á"
        'Ñ': 'Ñ',  # 
        'ò': 'ò'   # 
    }
    
    for wrong, correct in zamiana_map.items():
        text = text.replace(wrong, correct)

    text = re.sub(r'\s+', ' ', text)
    text = text.strip()

    return text


input_text = """JUÂŻ NIE... ZBIERAMY NA LECZENIE ALICJI... :-)

Ostatni dzieĂą lata 2009 moÂżna uznaĂŚ za oficjalnÂą datĂŞ zakoĂączenia naszej akcji pomocy Alicji :-)
Alicja zakoùczy³a z sukcesem proces leczenia - jest to wspania³a wiadomoœÌ dla wszystkich ludzi, którzy zaanga¿owali siê w nasz¹ akcjê
"""

output_text = napraw_bledy_znakow(input_text)
print("Naprawiony tekst:")
print(output_text)

Tutaj dorzucam fragment tekstu ze strony, który staram się oczyścić
https://pastebin.com/VNNvWnCv

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0

Należałoby ustalić w jakim kodowaniu są wyświetlane treści i poinstruować przeglądarkę o tym kodowaniu, najpewniej przez tag <meta>. Kodowanie użyte te 25 lat temu najprawdopodobniej nadal jest wspierane, myślę że można go użyć. Wątpię zeby przeglądarki przestały go obsługiwać. Podasz link do strony?

lofix
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wdzydze
0

@Riddle: hej. Dzięki za odzew. Próbowałem również i tego. Sprawdzałem kodowanie pliku i jest w UTF-8. Te "artefakty" są w tym pliku na stałe. Po prostu w którymś momencie przekodowano to na utf-8 razem z tymu krzakami.
Nie mam dużej wiedzy w Pythonie i posiłkowałem się odpowiedziami AI. Próba zmiany kodowania była pierwszą rzeczą jaką próbowałem zrobić.

Na webarchive jest kopia tej strony bez "zanieczyszczeń", ale średnio mi się uśmiecha pobierać kilkadziesiąt (kilkaset) plików html i potem czyścić z tego co webarchive zapisuje do pliku.

Strona: https://harcczat.org.pl/alicia/

Tam podobno nadal wchodzą "amazonki" w celach edukacyjnych i proszono mnie o naprawę tego.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0
lofix napisał(a):

@Riddle: hej. Dzięki za odzew. Próbowałem również i tego. Sprawdzałem kodowanie pliku i jest w UTF-8. Te "artefakty" są w tym pliku na stałe. Po prostu w którymś momencie przekodowano to na utf-8 razem z tymu krzakami.

Prawdopodobnie przekodowano to niepoprawnie 😕 Masz dostęp do wcześniejszych wersji kodu źródłowego strony?

lofix
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wdzydze
0
Riddle napisał(a):

Prawdopodobnie przekodowano to niepoprawnie 😕 Masz dostęp do wcześniejszych wersji kodu źródłowego strony?

Tylko na webarchive 😕

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0
lofix napisał(a):
Riddle napisał(a):

Prawdopodobnie przekodowano to niepoprawnie 😕 Masz dostęp do wcześniejszych wersji kodu źródłowego strony?

Tylko na webarchive 😕

Podeślesz link? Nie mogę znaleźć w archiwum.

lofix
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wdzydze
0
Riddle napisał(a):

Podeślesz link? Nie mogę znaleźć w archiwum.

https://web.archive.org/web/20160322212422/http://www.harcczat.pl/alicia/alicia.html?id=0

Wtedy strona była w domenie *.pl, a nie *.org.pl

Btw próbowałem też podmieniać wyrazy z pomocą słownika https://sjp.pl/download ale nie pykło.

Riddle
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10227
0

Oryginalne kodowanie to zdaje się było ISO-8859-2. Wydaje się też, że strona została stworzona przy pomocy narzędzia WebSite PRO 4.3 https://www.dobreprogramy.pl/website-pro,program,windows,6628202687461505

Czy ta strona na której pracujesz, to jest statyczna strona? Same HTML? Bez żadnych danych dodawanych z CMS, coś takiego?

lofix
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wdzydze
0
Riddle napisał(a):

Oryginalne kodowanie to zdaje się było ISO-8859-2. Wydaje się też, że strona została stworzona przy pomocy narzędzia WebSite PRO 4.3 https://www.dobreprogramy.pl/website-pro,program,windows,6628202687461505

Czy ta strona na której pracujesz, to jest statyczna strona? Same HTML? Bez żadnych danych dodawanych z CMS, coś takiego?

Mam dostęp do tych plików html via ftp, edytuję albo w Notepad++, albo pod linuksem w edytorze pod konsolą.
Ten co pisał tę stronę (o tej Alici) użył tego edytora, wiem bo w nagłówku jest (swoją drogą ten website niezłą kaszankę zrobił w htmlu :))

Spine
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6967
1

Twój słownik ma błędy.

np.

Kopiuj
'Ç': 'ć',  # "Ç" na "ć"
'Âę': 'ę',  # "Âę" na "ę"

Wystarczy zajrzeć w przykładowy tekst:

Kopiuj
uznaĂŚ // ostatni znak to ć
siĂŞ // ostatni znak to ę

Jak to się ma do Twojego słownika? Powinno w nim być tak:

Kopiuj
'ĂŚ': 'ć', 
'ĂŞ': 'ę', 

Pewnie ChatGPT generował kod i Ci sknocił słownik....

lofix
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wdzydze
2
Spine napisał(a):

Twój słownik ma błędy.

@Spine bardzo Ci dziękuję za naprowadzenie. Rzeczywiście. ustalę sam słownik do podmiany i powinno pójść z górki.

@Riddle Tobie również dziękuję.

Pozdrawiam

Marius.Maximus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2202
0

@lofix: jak masz wątpliwości co do kodowania pliku to możesz sciagnac binarnie na lokalny komputer i szybko sprawdzić w notepad++
które kodowanie jest odpowiednie dla Twojego pliku i wtedy automatem (iconv) zamieniasz wszystko na UTF8, a jak nie znajdziesz pary (Twoj plik + kodowanie) to dopiero wtedy "słownik" który naprawia błędy i tez finalnie zamieniasz na UTF8

stare pliki jak mają długa historie i dotykane były na Windows potrafią być w kilku kodowaniach :D

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.