簡體   English   中英

如何將csv文件的特定列轉換為字符串列表

[英]How to convert csv file's specific column to string List

有誰知道如何將 csv 文件中的特定列轉換為字符串 List ? 我正在嘗試從 csv 文件中獲取“聯系電話”列表。 (請在下面查看我的 csv 文件)

打算做

List<string> contactNumberList = new List<string>();
-- contactNumberList.Add("1888714"); (Manual)
---contactNumberList.Add("1888759");(Manual)

在我的 CSV

"Email","Opt In Date","Opted Out","Opt In Details","Email Type","Opted Out Date","Opt Out Details","Contact Number","Salutation"
"test1@testApp.com","05/01/2014 11:23 AM","F","User Name: capn@goldpop.org.uk. IP Address: 62.213.118.139","0","","","1888714","Mrs Hall"
"test2@testApp.com","05/01/2014 11:23 AM","F","User Name: capntransfer@goldpop.org.uk. IP Address: 62.213.118.139","0","","","1888759","Mrs Heyworth"

對於解析 CSV,我建議使用 ligrary,因為如果值被轉義,簡單地按行 / 列分隔符拆分可能會導致錯誤。

IE

“約翰先生,鮑勃·史密斯”

是一個有效的 CSV,因為它用引號轉義。 但是拆分功能將停止工作。

一個有效的選擇是 LumenWorks(您可以在 NuGet 中找到它)。

IE

using (var csv = new CsvReader(r, false, csvParserConfiguration.ColumnSeparator, '"', '"', '#', ValueTrimmingOptions.None))
{            
 // Read lines
 while (csv.ReadNextRecord())
 {
  contactNumberList.Add[7];
 }
}

逐行讀取文件,用逗號分隔Split() ,選擇所需的列,剪掉引號並添加到列表中?

嘗試這個:

int columnId = 3;
string[] lines = File.ReadAllLines(@"C:\test.csv");
var list = lines.Select(line => 
       { var values = line.Split(';');
         return values[columnId];
       });                        

您可以嘗試以下操作:

var reader = new StreamReader(File.OpenRead(@"C:\test.csv"));
List<string> contactNumbersList = new List<string>();
while (!reader.EndOfStream)
{
   var line = reader.ReadLine();
   var values = line.Split(',');
   contactNumbersList.Add(values[7]);
}

但更好的是,您可以使用像CSV Reader這樣的專用庫。

IEnumerable<string> strings = System.IO.File.ReadAllLines({filepath})
                                  .Select(x => x.Split(';')[{columnId}])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM