C#
1using System; 2using System.Collections.Generic; 3using System.Linq; 4using static System.Console; 5using System.IO; 6using System.Text.RegularExpressions; 7 8namespace Taglist 9{ 10 class Program 11 { 12 static void Main(string[] args) 13 { 14 System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); 15 16 try 17 { 18 // csvファイルを開く 19 using (var sr = new System.IO.StreamReader(@"D:tagList.csv", System.Text.Encoding.GetEncoding("shift-jis"))) 20 { 21 //配列をリストに変換 22 List<string> stringList = new List<string>(); 23 24 //csvの最大行取得 25 string[] lines = File.ReadAllLines(@"D:tagList.csv"); 26 27 28 for (int i = 0; i < lines.Length; i++) 29 { 30 // ファイルから一行読み込む 31 var line = sr.ReadLine(); 32 33 // 読み込んだ一行をカンマ毎に分けて配列に格納する 34 var tagget = line.Split(','); 35 36 //tagget[3]を/毎に分けて配列に格納 37 var tagget2 = tagget[3].Split('/'); 38 39 //複数の要素をlistにまとめて追加 40 stringList.AddRange(tagget2); 41 42 } 43 44 //重複した要素を削除 45 IEnumerable<string> result = stringList.Distinct().Take(19); 46 Console.WriteLine("[{0}]", string.Join(", ", result)); 47 } 48 } 49 catch (System.Exception e) 50 { 51 // ファイルを開くのに失敗したとき 52 System.Console.WriteLine(e.Message); 53 } 54 } 55 } 56} 57
taglist.csvの先頭3行抜粋
SLAM DUNK(スラム ダンク) (漫画),あらすじなので省略,日本 開始日:1990 週刊少年ジャンプ 1990年42号 / 終了日:1996 1996年27号,熱血/感動/格好良い/面白い/友情 今日から俺は!! (漫画),著者:西森博之 出版社:小学館,日本 開始日:1988 / 終了日:1997[開始日詳細] 週刊少年サンデー増刊号1988年9月号?1990年8月号 週刊少年サンデー1990年40号?1997年47号 ,面白い/友情/格好良い/楽しい/可笑しく笑える ドラゴンボール(DRAGON BALL) (漫画),著者:鳥山明 出版社:集英社 単行本:全42巻(ジャンプコミックス)、全34巻(完全版),日本 開始日:1984 週刊少年ジャンプ 1984年51号 / 終了日:1995 1995年25号,面白い/格好良い/熱血/楽しい/友情 ・ ・ ・
taglist.csvの[3]の先頭5行抜粋
熱血/感動/格好良い/面白い/友情 面白い/友情/格好良い/楽しい/可笑しく笑える 面白い/格好良い/熱血/楽しい/友情 考えさせられた/面白い/感動/格好良い/熱血 面白い/可笑しく笑える/楽しい/格好良い/感動
上記のコードは8000行あるtagList.csvの要素3を抽出し、抽出したものをバラバラに分解して重複するものを削除し、一つのリストにまとめるコードになります。
一つのリストにまとめた結果下記のような結果を得られました。
[熱血, 感動, 格好良い, 面白い, 友情, 楽しい, 可笑しく笑える, 考えさせられた, 怖い, 涙流した, びっくり, 勉強になった, 可愛い, 悲しい, 美しい, ロマンチックな気分, 勇気貰った, セクシー, 道徳心&モラル]
今回はこの得られた結果をtaglist.csvの要素3と比較して、同じ要素があるときは1をないときは0を出力するプログラムを作りたいと考えております。
例としては1行目と比較するなら
熱血,感動,格好良い,面白い,友情,楽しい,可笑しく笑える
1,1,1,1,0,0,0,0・・・
といった感じになります。
一つ一つ要素を比較していこうと考えてるのですが、IEnumerable<string>型のresultではtagget2と比較するとエラーが出て比較できません。どのようにすると比較が上手くいくかご教授していただけると幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/16 14:48