podczas zapisywania danychobchodzić zastępcze z pand
data.to_csv(outp_file, encoding='utf-8')
czasami pojawiają się błędy jak ten
UnicodeEncodeError: 'utf-8' codec can't encode characters in position 233-234: surrogates not allowed
W python3 można po prostu wymienić takie postacie
>> "abc\udc34xyz".encode('utf-8', 'replace').decode('utf-8')
'abc?xyz'
Ale tutaj mam ramka danych z N wierszami i M kolumnami. Dla mnie jest w porządku usuwanie wierszy z surogatami, ale nie jest dobrze, aby pominąć całą ramkę danych.
Problem polega na tym, że nie wiem, w których wierszach i w jakich kolumnach są.
szukam rozwiązania, które można zastosować w następujący sposób
try:
data.to_csv(outp_file, encoding='utf-8')
except UnicodeEncodeError:
# process data and save it without surrogates...
pomocy?
Nie możesz po prostu użyć 'applymap' do zastosowania funkcji Pythona do wszystkich komórek indywidualnie przed napisaniem pliku CSV? – JohnE
i jak zawsze lepiej jest podać małą próbkę obrazu, aby ludzie mogli przetestować swoje odpowiedzi. a także pożądane wyniki. – JohnE
@JohnE Na razie wydaje się, że jest to jedyne możliwe rozwiązanie, bez względu na to, że mówi "to nie jest sposób w jaki powinieneś to zrobić". Często mam do czynienia z dość dużymi ramkami danych mającymi kilka milionów kolumn tekstu (a rozwiązanie "po prostu sprawdź każdą jego część" może nie bardzo dobrze skalować). Dane wejściowe to dowolna ramka danych (może być dość duża, jak wskazałem) z komórkami zawierającymi znaki zastępcze, takie jak w moim pytaniu. Pożądanym wynikiem jest zastąpienie ramki danych zastępującymi znakami znakiem "?" jak w moim pytaniu. – tarashypka