Парсинг в Excel клетке.Как? - PullRequest
1 голос
/ 10 октября 2010

У нас есть файл Excel.Этот файл находится в ячейке с именем «address», содержащей строку, например:

The Accounts Department, National Bank Ltd, 20 Lombard Str., London 3 WRS, England

Требуется обмен информацией в группах ячеек.То есть у нас должны быть следующие ячейки:

«страна»: Англия «город»: Лондон «улица»: Lombard Str...... и другие

Это необходимо для анализа содержимого ячейки и деления содержимого на логические части.Вы можете сказать, с чего я начал?

Ответы [ 2 ]

3 голосов
/ 10 октября 2010

Это действительно зависит от того, разделены ли ваши «логические части» каким-либо образом, так что вы можете идентифицировать каждую часть отдельно. Я сомневаюсь, что вы можете использовать запятую "," в качестве разделителя, поскольку компоненты адреса сами могут содержать запятые (например, название фирмы / бизнеса). Кроме того, у вас могут быть проблемы с чистотой данных - это может быть отсутствие запятых, или не в том месте, или где-то еще.

Если вы разграничили данные, ваша работа несколько упростилась, и вы сможете независимо идентифицировать каждое поле. Однако это все еще не так просто. Если у вас нет разделенных данных, это будет намного сложнее. В любом случае, идентификация полей, вероятно, будет выглядеть следующим образом:

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

2) Страна и город, город - вы можете получить их в словаре городов и городов Великобритании. Есть Google.

3) Деревни - сложнее, но словарь снова даст вам 98% пути.

4) Улицы, дороги и т. Д. Для этого нельзя использовать словарь. Вам нужно будет сделать какое-то распознавание на основе ключевых слов - если поле заканчивается улицей, дорогой, полосой движения или чем-то еще. Однако их много. Вы можете найти, что для этого хорошо подходит байесовский подход.

5) Название компании, отдел и т. Д. Еще сложнее. Опять же, некоторые ключевые слова могут пометить их (например, "ltd"), но я предполагаю, что большинство ваших записей не гарантированно включают юридическое лицо. И отделы могут быть чем угодно.

Кроме того - как насчет имен людей? Вы можете узнать их?

Короче говоря, это довольно большая и сложная работа, которая должна быть выполнена правильно. Нет простого / простого ответа.

Кстати - если вы получаете доступ к PAF, который может вам помочь: http://www.royalmail.com/portal/rm/jump2?mediaId=400085&catId=400084&campaignid=paf_redirect

Но это все равно не поможет вам с названиями отделов, предприятий или людей.

2 голосов
/ 10 октября 2010

Нет надежного способа сделать это. Предполагая (и это большое предположение), что запятые только используются для разделения ячеек, вы можете в меню Data выбрать Text To Columns и выбрать comma в качестве разделитель.

Это должно дать вам что-то вроде следующего:

A1                      | B1                | C1              | D1           | E1     
The Accounts Department | National Bank Ltd | 20 Lombard Str. | London 3 WRS | England

Оттуда, в ячейке F1, вы можете сделать следующее, чтобы попытаться извлечь название улицы:

=RIGHT(C1,LEN(TRIM(C1))-FIND(" ",TRIM(C1)))

Вы можете использовать это, чтобы найти город:

=LEFT(D1,FIND(" ",TRIM(D1)))

Вероятно, вы найдете исключения для обеих моих формул, и вам просто придется обойти это.

Если мое первое предположение неверно и в тексте есть запятые , отличные от разделителя полей, я бы попросил вернуть файл с другим разделителем (например, pipe).

...