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)?