Код: Выделить всё
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)
С помощью pandas вы можете справиться с этим через TextIOWrapper или встроенный аргументcoding_errors.
Вопросы:
- почему это не работает с полярами< /code>, учитывая, что TextIOWrapper должен обрабатывать этот ввод в виде потока?
- есть ли способ обработать это изначально с помощью поляров (я имею в виду любой другой способ, кроме чтения с помощью pandas и последующего преобразования с помощью Polars.from_pandas)?
Подробнее здесь: https://stackoverflow.com/questions/793 ... ith-polars
Мобильная версия