Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web scraping 将输出(println!)转换为.csv文件_Web Scraping_Rust_Export To Csv_Yahoo Finance_Writer - Fatal编程技术网

Web scraping 将输出(println!)转换为.csv文件

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结尾的文件,然后使

基本上,我想把这个程序,输出为.csv文件,而不是println!(),我刚用了println!以确保程序正常运行。我对生锈和编程还是相当陌生的(如果我听起来没受过教育,我道歉)。我只是让这个程序成为我可以使用的实用程序(在金融行业工作)并以此为基础进行开发。

有一个API可以让你创建文件。在这些文件中,有一个函数,您可以将
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"));
    }
}