Web scraping 将输出(println!)转换为.csv文件
基本上,我想把这个程序,输出为.csv文件,而不是println!(),我刚用了println!以确保程序正常运行。我对生锈和编程还是相当陌生的(如果我听起来没受过教育,我道歉)。我只是让这个程序成为我可以使用的实用程序(在金融行业工作)并以此为基础进行开发。有一个API可以让你创建文件。在这些文件中,有一个函数,您可以将Web scraping 将输出(println!)转换为.csv文件,web-scraping,rust,export-to-csv,yahoo-finance,writer,Web Scraping,Rust,Export To Csv,Yahoo Finance,Writer,基本上,我想把这个程序,输出为.csv文件,而不是println!(),我刚用了println!以确保程序正常运行。我对生锈和编程还是相当陌生的(如果我听起来没受过教育,我道歉)。我只是让这个程序成为我可以使用的实用程序(在金融行业工作)并以此为基础进行开发。有一个API可以让你创建文件。在这些文件中,有一个函数,您可以将String传入其中。有一个格式宏,它允许您执行与println相同的操作但它返回一个字符串。因此,如果您将这一切拼凑在一起,您应该能够创建一个名称以.csv结尾的文件,然后使
String
传入其中。有一个格式代码>宏,它允许您执行与println相同的操作
但它返回一个字符串
。因此,如果您将这一切拼凑在一起,您应该能够创建一个名称以.csv
结尾的文件,然后使用API在for循环中向其写入内容,就像使用println代码>
也许更合适的方法是查找一个csv
板条箱,它可以为您提供更多的csv
特定功能。一个快速搜索出现了。您可以通过使用宏而不是println代码>。您将需要实现Write
特性的东西,例如。这需要作为第一个参数传递给writeln代码>
然后,您的示例将这样编写:
use yahoo_finance::{history, Interval, Timestamped};
#[tokio::main]
async fn main() {
let data = history::retrieve_interval("AAPL", Interval::_6mo).await.unwrap();
for end in &data {
println!("Close ${:.2}, {}", end.close,end.datetime().format("%b %e %y)"));
}
}
我删除了日期格式中的括号,我认为这是错误的?无论如何,我希望我能帮上忙
正如其他人所指出的,这并不是可能的最干净的解决方案,您可能需要注意自己引用的内容,因此考虑使用CSV库也可能是一个好主意。但在这种情况下,我认为它应该可以像这样工作。还有一个宏,它的作用与println相同代码>除非它允许您指定输出文件,而不是打印到标准输出。
use yahoo_finance::{history, Interval, Timestamped};
#[tokio::main]
async fn main() {
let data = history::retrieve_interval("AAPL", Interval::_6mo).await.unwrap();
// create a file called data.csv, overwriting the file if it already existed
let mut file = std::fs::File::create("data.csv");
for end in &data {
// write to the file instead of standard output
writeln!(file, "Close ${:.2}, {}", end.close,end.datetime().format("%b %e %y"));
}
}