从文本文件读取某些数据

时间:2019-03-20 12:22:11

标签: c# text-files

a = set(a)

我有一个文本文件,其中包括这些数据类型,它们用一个空格分隔,我需要做的是。例如,所有这5行的读取日期数据类型(21.6.2018,9.4.2016,12.8.2016 ...)或读取数字直到DATE数据类型。当我阅读这些行时,我需要对所有5行执行此操作,因此不仅要执行1行。我有点困惑。

(我有25行这些数据类型,但我很难写出其中5行就够了)

任何指导将不胜感激

2 个答案:

答案 0 :(得分:2)

此代码将读取所有行并将所有日期放在dates列表中:

var dates = File.ReadLines("<path to your file>")
    .Select(line => line.Split(' ')
             .Select(column => DateTime.TryParseExact(
                          column, 
                          "d.M.yyyy", 
                          CultureInfo.InvariantCulture, 
                          DateTimeStyles.None, out var date)
                        ? (DateTime?)date : null))
             .Where(c => c != null)
             .First());

另一个创建整个行中任意对象的版本:

var dataRows = File.ReadLines("<path to your file>")
        .Select(line => {
                 var strings = line.Split(' ');
                 return new { Col1 = int.Parse(strings[0]),
                          Col2 = DateTime.ParseExact(
                              strings[1],
                              "d.M.yyyy", 
                              CultureInfo.InvariantCulture),
                          Col3 = int.Parse(strings[2]),
                          Col4 = int.Parse(strings[3]),
                          Col5 = int.Parse(strings[4]),
                          Col6 = int.Parse(strings[5]),
                          Col7 = int.Parse(strings[6])
                 };
               });

当然,您可以创建自己的类,并使用该类代替匿名返回。名称Col1...Col7可以重命名为在您的用例中更有意义的名称。

要输出所有行,您需要使用循环:

foreach(var row in dataRows)
{
     Console.WriteLine(row.Col1);
     Console.WriteLine(row.Col2);
     Console.WriteLine(row.Col3);
     Console.WriteLine(row.Col4);
     Console.WriteLine(row.Col5);
     Console.WriteLine(row.Col6);
}

希望这会有所帮助

答案 1 :(得分:0)

您可以将Regex与LINQ一起使用以比较日期格式的数据类型。

CODE

​import pandas as pd

xlsx = pd.ExcelFile('A://Data/File.xlsx')
data_sheets = []
for sheet in xlsx.sheet_names:
    data_sheets.append(xlsx.parse(sheet))
data = pd.concat(data_sheets)
print(data)