我想解析文本文件中的表格數據到數據表中。解析文本文件到不規則行的數據表
文本文件包含文本
PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND
11 root 1 171 52 0K 12K RUN 23:46 80.42% idle
12 root 1 -20 -139 0K 12K RUN AS 0:56 7.96% swi7:
的代碼,我是喜歡
public class Program
{
static void Main(string[] args)
{
var lines = File.ReadLines("bb.txt").ToArray();
var headerLine = lines[0];
var dt = new DataTable();
var columnsArray = headerLine.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
var dataColumns = columnsArray.Select(item => new DataColumn { ColumnName = item });
dt.Columns.AddRange(dataColumns.ToArray());
for (int i = 1; i < lines.Length; i++)
{
var rowLine = lines[i];
var rowArray = rowLine.Split(" ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
var x = dt.NewRow();
x.ItemArray = rowArray;
dt.Rows.Add(x);
}
}
}
我得到一個錯誤,「輸入數組比該表中的列數不再是」在第二嘗試
x.ItemArray = rowArray;
偏離過程,因爲第二行的「RUN AS」值爲第8列。它之間還有一個空格,它是整行的常見分割字符,因此會在數組長度和列長度之間造成不匹配。
這種情況的可能解決方案是什麼?
它看起來像你的文件應該製表符分隔,但標籤被替換爲空格?既然它既不是固定的長度,也不是單個字符分隔的,你可能不得不考慮使用正則表達式來解析它。 – juharr
有沒有任何使用正則表達式來解析表格數據的例子。如何在文本下獲取文本。就像如何選擇所有的USERNAME值 –
你可以改變文本文件嗎?例如,如果列中可能包含兩個單詞,那麼您可以事先將它更改爲'「RUN AS」而不是'RUN AS',這種方式會更清晰。否則,您可能需要每次檢查數組是否包含更多元素,並嘗試從第8列開始將每個額外數據摺疊到第7列。 – Ian