You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用StreamReader与Split方法从CSV提取剧集名生成TXT遇阻

提取CSV指定列生成TXT文件的解决方案

需求

提取CSV每行中首个双引号包裹的字符串(即title列内容),生成对应的TXT文件。

示例CSV内容

number,season,episode,airdate,title,tvmaze link
1,1,1,13 Sep 05,"Pilot","https://www.tvmaze.com/episodes/991/supernatural-1x01-pilot"
2,1,2,20 Sep 05,"Wendigo","https://www.tvmaze.com/episodes/992/supernatural-1x02-wendigo"
3,1,3,27 Sep 05,"Dead in the Water","https://www.tvmaze.com/episodes/993/supernatural-1x03-dead-in-the-water"
4,1,4,04 Oct 05,"Phantom Traveler","https://www.tvmaze.com/episodes/994/supernatural-1x04-phantom-traveler"
5,1,5,11 Oct 05,"Bloody Mary","https://www.tvmaze.com/episodes/995/supernatural-1x05-bloody-mary"

目标TXT文件内容

Pilot
Wendigo
Dead in the Water
Phantom Traveler
Bloody Mary

初始尝试代码

private void GetEpisodeNamesFromCSV()
{
    using (StreamReader sr = new StreamReader(AppDir + "\\list.csv"))
    {
        string strResult = sr.ReadToEnd();
        string[] result = strResult.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);
        File.WriteAllLines(AppDir + "\\list_generated_" + ShowTitel + ".txt", result);
    }
}

遇到的问题

作为编程新手,无法正确拆分StreamReader读取的内容,仅保留每行的剧集名称。

最终实现方案(基于CsvHelper)

采用@Jesús López推荐的CsvHelper库实现,代码如下:

// 创建存储剧集名的列表
List<string> episodeNames = new List<string>();

// 清理CSV中的空行
var lines = File.ReadAllLines(AppDir + "\\list.csv").Where(arg => !string.IsNullOrWhiteSpace(arg));
File.WriteAllLines(AppDir + "\\list.csv", lines);

// 打开文件流
var streamReader = File.OpenText(AppDir + "\\list.csv");
var csv = new CsvReader(streamReader, CultureInfo.InvariantCulture);

// 读取文件
csv.Read();

// 读取表头
csv.ReadHeader();

// 获取表头数组
string[] header = csv.Context.Reader.HeaderRecord;

// 指定要提取的列名并获取其索引
var columnExtracted = "title";
int extractedIndex = Array.IndexOf(header, columnExtracted);

// 逐行读取并提取目标列内容
while (csv.Read())
{
    string[] row = csv.Context.Reader.Parser.Record;
    string column = row[extractedIndex];
    episodeNames.Add(column);
}

// 将列表转换为字符串数组
string[] result = episodeNames.ToArray();

// 将内容写入TXT文件
File.WriteAllLines(AppDir + "\\list.txt", result);

内容的提问来源于stack exchange,提问作者Pin-Lui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:18:28