使用 Polars Rust API,是否可以直接从 CSV 字符串/读取器创建 DataFrame,同时指定分隔符等选项?
目前,我正在解决这个问题,通过将字符串保存到临时路径并使用读取它LazyCsvReader::new("tmp_path.csv")
。
在最终的用例中,例如通过请求接收(可能很大的)CSV 数据。
use anyhow::Result;
use polars::prelude::*;
fn main() -> Result<()> {
let csv_str = "name|age|city
Alice|30|New York
Bob|25|London";
// Writing it to a file, but I'd prefer to read the CSV data directly.
std::fs::write("tmp.csv", csv_str)?;
let df = LazyCsvReader::new("tmp.csv").with_separator(b'|').finish()?.collect()?;
// Also tried `CsvReader`, though I couldn't figure out how to make it work with a custom delimiter.
/* let cursor = std::io::Cursor::new(csv_str);
let df = CsvReader::new(cursor).finish()?; */
println!("{df}");
Ok(())
}