Behandeln Sie ungültige Codierungssequenzen in CSV mit Polaren
Posted: 25 Jan 2025, 14:17
Betrachten Sie den folgenden Snippet: < /p>
Sie haben dort eine ungültige CSV-Datei erhalten, die schlecht ist, mit zwei unterschiedlichen Kodierungen. Seltsamerweise ist dies immer noch ein reales Problem, und zwar ein zu häufiges.
Mit Pandas können Sie dies entweder über den TextIOWrapper oder das eingebaute Argument „encoding_errors“.
Fragen:
Code: Select all
from io import TextIOWrapper, BytesIO
import polars as pl
import pandas as pd
csv_str = (
b"spam,egg\n"
+ "spam,œuf\n".encode("cp1252")
+ "spam,αυγό\n".encode("utf8")
)
content = BytesIO(csv_str)
wrapped = TextIOWrapper(content, errors="replace")
try:
df = pl.read_csv(wrapped)
except Exception as e:
print("polars failed!")
print(e)
wrapped.seek(0)
try:
df = pd.read_csv(wrapped, sep=",")
except Exception as e:
print("pandas failed!")
print(e)
Mit Pandas können Sie dies entweder über den TextIOWrapper oder das eingebaute Argument „encoding_errors“.
Fragen:
- Warum funktioniert das nicht mit Polaren< /code>, wenn man bedenkt, dass der TextIOWrapper damit umgehen sollte Eingabe als Stream?
- Gibt es eine Möglichkeit, dies nativ mit Polaren zu handhaben (ich meine eine andere Möglichkeit, als es mit Pandas zu lesen und es dann mit Polaren zu konvertieren). .from_pandas)?