首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换输出(println!)转到.csv文件

转换输出(println!)转到.csv文件
EN

Stack Overflow用户
提问于 2021-02-23 12:57:18
回答 2查看 120关注 0票数 1
代码语言:javascript
复制
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!(),我只使用了println!以确保程序能正常工作。我对Rust和一般的编程还是相当陌生的(如果我听起来没受过教育,很抱歉)。我只是把这个程序作为一个实用的东西来使用(在金融行业工作),并在此基础上继续发展。

EN

回答 2

Stack Overflow用户

发布于 2021-02-24 03:32:44

您可以通过使用writeln!宏而不是println!来执行此操作。您需要一些实现Write特征的东西,例如File。这需要作为第一个参数传递给writeln!

然后,您的示例将像这样编写:

代码语言:javascript
复制
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"));
    }
}

我删除了日期格式中的括号,我想是不是弄错了?无论如何,我希望我能帮上忙。

正如其他人所指出的,这不是最干净的解决方案,您可能必须注意引用自己的东西等等,因此研究使用CSV库也可能是一个好主意。但在这种情况下,我认为它应该像这样工作得很好。

票数 1
EN

Stack Overflow用户

发布于 2021-02-23 13:17:46

有一个std::fs::File应用程序接口可以让你创建文件。在这些文件中,有一个可以传入Stringwrite函数。有一个format!宏,它允许您执行与println!相同的操作,但它返回一个String。因此,如果您将这一切拼凑在一起,您应该能够创建一个名称以.csv结尾的文件,然后像对println!所做的那样,使用API在for循环中向其写入内容。

不过,可能更合适的方法是查找一个可以为您提供更多csv特定功能的csv机箱。快速搜索一下,就找到了this library

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66327286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档