rust表格文件处理

为什么选择 csv 而不是 excel

  • Excel 是一个二进制文件,只能用 Microsoft Excel 文档
  • Excel 导入数据时消耗更多的内存
  • Csv 是纯文本格式
  • 所以您应该转换一下
rust 复制代码
// 需求:拿到title是Professor的人的姓名

const MOCK_DATA: &'static str = include_str!("dept_data.csv");

// 先声明包含vector的工具结构体
struct Names<'a> {
    inner: Vec<&'a str>,
}

struct Titles<'a> {
    inner: Vec<&'a str>,
}

// 创建结构体返回结果
#[derive(Debug)]
struct ProfessorInfo{
    name: String,
    title: String,
}

impl ProfessorInfo {
    // 生成vec的方法
    fn generate_vec(names: Names, titles: Titles) -> Vec<ProfessorInfo>{
        let data = names.inner.iter().zip(titles.inner.iter());
        let mut res_vec: Vec<ProfessorInfo> = Vec::new();
        for (name, title) in data
            .filter(|tuple_item|tuple_item.1.to_string().contains("Professor"))
            .take(3)
        {
            let item = ProfessorInfo {
                name: name.to_string(),
                title: title.to_string(),
            };
            res_vec.push(item);
        }
        res_vec
    }
}


fn main() {
    // 从csv字符串中提取数据
    let data: Vec<_> = MOCK_DATA.split('\n').skip(1).collect();

    let names: Vec<_> = data.iter()
        .filter_map(|line| line.split(',').nth(1))
        .collect();
    let names = Names { inner: names };

    let titles: Vec<_> = data.iter()
        .filter_map(|line| line.split(',').nth(4))
        .collect();
    let titles = Titles { inner: titles };

    let back = ProfessorInfo::generate_vec(names, titles);
    println!("{:?}", back);
}
相关推荐
百锦再3 小时前
第6章 结构体与方法
android·java·c++·python·rust·go
小八四爱吃甜食3 小时前
【R语言】构建GO、KEGG相关不同物种的R包
开发语言·golang·r语言
音符犹如代码3 小时前
ArrayList常见面试题二
java·开发语言·面试·职场和发展
尘缘浮梦3 小时前
RobotFramework框架环境搭建
linux·开发语言·python
北冥湖畔的燕雀3 小时前
C++STL之vector
开发语言·c++
lsx2024063 小时前
Matplotlib 饼图
开发语言
程序猿_极客3 小时前
JavaScript的Web APIs 入门到实战(day2):事件监听与交互实现,轻松实现网页交互效果(附练习巩固)
开发语言·前端·javascript·学习笔记·web apis 入门到实战
闲人编程4 小时前
用Python控制硬件:Raspberry Pi项目初体验
开发语言·python·raspberry·pi·codecapsule·控制硬件
cherry--4 小时前
集合(开发重点)
java·开发语言