Анализатор цен - PullRequest
       25

Анализатор цен

3 голосов
/ 21 июля 2010

Мне нужно создать анализатор прайс-листов, который импортирует данные из Excel или CSV и помещает их в базу данных.У меня нет проблем получить данные из источника.Мне нужно найти столбцы, которые содержат цену, название продукта и описание автоматически.

Что вы можете предложить, как это сделать, есть ли общие методы или библиотеки?

Образец данных 1:

Intel Core 2 Duo E6300 (2.80GHz, 1066MHz, 2MB, S775) tray  |    83
Intel Core 2 Duo E6500 (2.93GHz, 1066MHz, 2MB, S775) tray  |    86

Образец данных 2:

     Title                     Description                Guaranty     Price  
Intel Core 2 Duo E6300  |  2.80GHz, 1066MHz, 2MB, S775   |  12       |  83    
Intel Core 2 Duo E6500  |  2.93GHz, 1066MHz, 2MB, S775   |  6        |  86

Образец данных 3:

 UPC                Title                      Price
 456546545     |  Intel Core 2 Duo E6300    |  83 
 4654654654    |  Intel Core 2 Duo E6500    |  out of stock

Ответы [ 3 ]

2 голосов
/ 23 июля 2010

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

В вашем примере я бы нашел цену и удалил ее из строки. Оттуда вам нужно будет найти какой-то шаблон в данных, который позволит вам разобрать наш код продукта. Не видя больше РЕАЛЬНЫХ данных, трудно решить, что это такое. В моем анализаторе адресов я использовал адресные суффиксы (Rd, St, Court и т. Д.), Чтобы помочь идентифицировать конец адресной строки.

Если вы можете предоставить больше данных, мы, вероятно, могли бы быть более полезными.

0 голосов
/ 23 июля 2010

В зависимости от качества вашего ввода (все ли строки ввода одинаково отформатированы), вы можете попробовать следующее:

string s = "Intel Core 2 Duo E6300 (2.80GHz, 1066MHz, 2MB, S775) tray  |    83";
string firstPart = s.Substring(0, s.IndexOf("(")).Trim(); //returns "Intel Core 2 Duo E6300"
string secondPart = s.Substring(s.IndexOf("(") + 1, s.IndexOf(")") - s.IndexOf("(") - 1).Trim(); //returns "2.80GHz, 1066MHz, 2MB, S775"
string thirdPart = s.Substring(s.IndexOf(")") + 1, s.IndexOf("|") - s.IndexOf(")") - 1).Trim(); //returns "tray"
string fourthPart = s.Substring(s.IndexOf("|") + 1, s.Length - s.IndexOf("|") - 1).Trim(); //returns "83"

Но если ваши данные не отформатированы равномерно, вам может потребоваться выполнить некоторую (или большую) проверку, прежде чем вы сможете использовать вышеуказанные функции.

0 голосов
/ 21 июля 2010

Если вы используете SQL Server, я бы посоветовал вообще не создавать программу и использовать службы интеграции SQL Server, которые имеют встроенную поддержку CSV и Excel.

...