a = set(a)
我有一个文本文件,其中包括这些数据类型,它们用一个空格分隔,我需要做的是。例如,所有这5行的读取日期数据类型(21.6.2018,9.4.2016,12.8.2016 ...)或读取数字直到DATE数据类型。当我阅读这些行时,我需要对所有5行执行此操作,因此不仅要执行1行。我有点困惑。
(我有25行这些数据类型,但我很难写出其中5行就够了)
任何指导将不胜感激
答案 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一起使用以比较日期格式的数据类型。
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)