使用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
相关产品推荐
相关产品推荐

