Получение непредсказуемых данных в табличном формате - PullRequest
0 голосов
/ 05 мая 2010

Ситуация:

Каждая страница, которую я вычищаю, содержит <input> элементов с title= и value=

Я не знаю, что будет на странице.

Я хочу, чтобы все мои собранные данные были в одной таблице в конце со столбцом для каждого заголовка.

Так что, в основном, мне нужно, чтобы каждая строка данных выровнялась со всеми остальными, и если строка не имеет определенного элемента, то она должна быть пустой (но для сохранения выравнивания должно быть что-то).

например.

Первая страница имеет: {animal: cat, colour: blue, fruit: lemon, day: monday}

На второй странице: {animal: fish, colour: green, day: saturday}

На третьей странице: {animal: dog, number: 10, colour: yellow, fruit: mango, day: tuesday}

Тогда моя результирующая таблица должна быть:

animal | number | colour | fruit | day
cat    | none   | blue   | lemon | monday
fish   | none   | green  | none  | saturday
dog    | 10     | yellow | mango | tuesday

Хотя было бы неплохо сохранить порядок пар title value, что, как я знаю, словари не будут делать.

Так что в основном мне нужно генерировать столбцы из всех titles (сохраненных в порядке, но каким-то образом слитых вместе)

Каков наилучший способ сделать это, не зная всех возможных заголовков и явно указав порядок для значений, которые будут вставлены?

Ответы [ 2 ]

2 голосов
/ 05 мая 2010

Вам нужен многопроходный алгоритм. Запомните все очищенные страницы в списке диктовок. При первом проходе просмотрите этот список, соберите все заголовки в set () и создайте порядок (например, преобразуйте их в список, сортируя их по алфавиту).

Во втором проходе вы печатаете таблицу и используете сгенерированный порядок в качестве имен столбцов, извлекая значения из словарей по мере необходимости (по умолчанию пустые для обработки пропущенных значений), например с помощью dict.get (name, "") .

0 голосов
/ 05 мая 2010

Я бы предложил, чтобы вы могли использовать необязательные параметры или альтернативно использовать перегруженные конструкторы для заполнения значений:

Page(string animal = string.empty, 
int number = -999, string colour = string.empty, day = string.empty )

Либо так, либо сохраните каждую пару ключ / значение как объект типа, а затем приведите ее со своих страниц.

...