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);
}
相关推荐
caimouse1 小时前
reactos编码规范
c语言·开发语言
xieliyu.5 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
CryptoPP6 小时前
快速对接东京证券交易所API数据:实战指南与代码示例
开发语言·人工智能·windows·python·信息可视化·区块链
ZC跨境爬虫6 小时前
跟着 MDN 学JavaScript day_7:数学运算与逻辑判断实战测试
开发语言·前端·javascript·学习·ecmascript
阳区欠7 小时前
【LangChain】LLM基础介绍
开发语言·python·langchain
Jinkxs7 小时前
Java 跨域14-Java 与区块链(Hyperledger)集成
java·开发语言·区块链
晨曦中的暮雨8 小时前
Golang速通(Javaer版)
java·开发语言·后端·golang
小小编程路9 小时前
Python 还有容器类型互转、进制转换、字符编码转换
开发语言·windows·python
qeen879 小时前
【C++】类与对象之类的默认成员函数(二)
android·c语言·开发语言·c++·笔记·学习
CRMEB系统商城9 小时前
CRMEB多商户系统(Java)v2.3公测版发布
java·开发语言·人工智能·小程序·开源·php