Excel Regex или экспорт в Python?;"Vlookup" в Python? - PullRequest
0 голосов
/ 05 мая 2010

У нас есть файл Excel с рабочим листом, содержащим записи о людях.

1. Номер телефона Санитария

Одним из полей является поле номера телефона, которое содержит номера телефонов в формате, например ::

+XX(Y)ZZZZ-ZZZZ

(где X, Y и Z - целые числа).

Есть также некоторые записи, которые имеют меньше цифр, например ::

+XX(Y)ZZZ-ZZZZ

И другие с действительно испорченными форматами:

+XX(Y)ZZZZ-ZZZZ / ZZZZ

или

ZZZZZZZZ

Нам нужно очистить их все в формате:

0YZZZZZZZZ (or OYZZZZZZ with those with less digits).

2. Заполните данные супервизора

У каждого человека также есть руководитель, которому присваивается числовой идентификатор. Нам нужно выполнить поиск, чтобы получить имя и адрес электронной почты этого руководителя и добавить его в строку.

Этот поиск будет сначала на том же листе (то есть самом поиске), а затем он может вернуться к другой книге с большим количеством людей.

3. Подход

Что касается первой проблемы, я думал о том, чтобы как-то использовать регулярные выражения в Excel / VBA для анализа. Мой Excel-фу не самый лучший, но я полагаю, что могу научиться ... лол. Есть какие-то особые моменты на этом?

Однако лучше ли мне экспортировать XLS в CSV (например, используя xlrd), а затем использовать Python для исправления телефонных номеров?

Что касается второго подхода, я думал о том, чтобы просто использовать vlookups в Excel, чтобы извлечь данные и каким-то образом заставить их провалиться, сначала при поиске, затем во внешней книге, а затем просто вставив текст ошибки. Не уверен, как сделать эту последнюю часть.

Однако, если мне удастся выбрать экспорт в CSV и сделать это на Python, каков эффективный способ сделать vlookup? (Должен ли я перейти к диктовке или просто повторить? Или есть лучший или более идиоматический способ?)

Ура, Victor

Ответы [ 2 ]

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

В общем, избегайте формул Excel; используйте xlrd для извлечения нужных вам данных, затем забудьте, что они пришли из Excel, и манипулируйте данными с помощью Python. Например. решение вопроса xlrd / vlookup: наилучшим способом было бы создать словарь ОДИН РАЗ из соответствующих частей двух столбцов, содержащих ключи и значения.

Использование xlrd для экспорта в CSV и последующего его чтения - пустая трата времени и потеря ценной информации (например, фактический тип данных в ячейке Excel). Если бы ваши данные были в базе данных, вы бы экспортировали их в CSV и прочитали обратно ??

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

Если вы идете по маршруту VBA, вам может потребоваться посмотреть документацию Tushar Mehta . Если вы пойдете по пути Python, вы можете попытаться выполнить синтаксический анализ в CSV или, в качестве альтернативы, просто манипулировать вещами в памяти и писать через XLWT (что было бы моей предпочтительной техникой). Вы также можете подумать о том, чтобы просто изменить данные Excel напрямую, используя вызовы COM, на основе чего-то вроде this . Наконец, если вы решили сделать это за пределами Excel, вы можете взглянуть на Jython и Apache POI . Не самое легкое решение, но POI - самая полная библиотека, которую я знаю, которая не зависит от работы в Windows.

Как заметили другие в комментариях, трудно быть конкретным с таким широким вопросом. Надеюсь, что-то здесь поможет вам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...