Форум сайта python.su
Доброго времени суток, форумчане. Имеются текстовые файлы с объявлениями о продаже квартир. Данные в файлах не структурированные. Необходимо извлечь данные из текстовиков и рассортировать их в таблицу csv по полям:
Руслан
1. ID объявления
2. N выпуска презента -> дата выпуска
3. Адрес: 2 столб-> район
4. Кол-во комнат - число
5. Квадратура - число
6. Телефон 1
7. Телефон 2
8. Цена - в миллионах
9. п/стр: 1,0,NULL
10. дерев 1,0, нулл
11. панель 1,0, нулл
12. кирпич 1,0, нулл
13. монолит 1,0, нулл
14. сталинки 1,0, нулл
15. бараки 1,0, нулл
16. этаж - число
17. монолит-кирп 1,0, нулл
18. с/у разд 1,0, нулл
19. обмен - 1 0 нулл
20. хрущ 1,0, нулл
Нужно номера домов (если есть) в отдельный столбец. Местоположение (если есть) тоже убрать в отдельный столбец
Всё необходимое добавил прикрепленным файлом.
Прикреплённый файлы: Необходимые данные и наработки.rar (46,4 KБ)
Офлайн
Ну. И что Вы хотите от нас?
Где Ваш код?
Офлайн
4kpt_IIкод в архиве, папка “наработка”, но могу для простоты дела выложить и сюда.
Ну. И что Вы хотите от нас?Где Ваш код?
streets=[ "2-я Артемовская", "3-й Путевой", "50-летия Октября", "60-летия Октября", "Абрикосовый", "Авиационная", "Авроры", "Автобусная", "Автобусный", "Автономная", "Автономный", "Адмиральская", "Адмиральский", "Айвазовского", "Аксенова", "Албанский", "Алеутская", "Алеутский", "Алтайская", "Амурская", "Амурский", "Ангарская", "Антенная", "Армавирская", "Арсеньева", "Артемовская", "Архангельская", "Аэродромная", "Байкальская", "Байкальский", "Балашовская", "Балтийская", "Барабинская", "Бассейный", "Батарейный", "Батуевская Ветка", "Батумская", "Белинского", "Беломорская", "Белорусская", "Бийская", "Бикинская", "Благодатный", "Блюхера", "Богачева", "Богородская", "Бойко-Павлова", "Б.-Павлова", "Больничная", "Большая", "Большой Аэродром", "Бондаря", "Братский", "Брестская", "Бробиджанская", "Бурейская", "Ватутина", "Вахова", "Верхнеудинская", "Весенняя", "Владивостокская", "Владивостокское", "Войкова", "Вологодская", "Волочаевская", "Волочаевский городок", "Волховская", "Воровского", "Воронежская", "Воронежское", "Ворошилова", "Восточное", "Восточный Семафор", "Вострецова", "Выборгская", "Вяземская", "Гагарина", "Гайдара", "Гамарника", "Гаражный", "Гвардейская", "Геодезическая", "Георгиевская", "Герасимова", "Герцена", "Глинная", "Гоголя", "Горького", "Госпитальный", "Гражданский", "Даниловского", "Данчука", "Даурская", "Двойная", "Дежнева", "Демократический", "Демьяна Бедного", "Д. Бедного", "Джамбула", "Дзержинского", "Дзержинского", "Дикопольцева", "Доватора", "Донская", "Донской", "Дончука", "Доступный", "Дьяченко", "Железнякова", "Жданова", "Жуковского", "Забайкальская", "Забайкальский", "Запарина", "Заречная", "Засыпной", "Зеленая", "Зеленоборский", "Знаменщикова", "Зои Космодемьянской", "Ивановский", "Известковая", "Изумрудная", "Ильича", "Индустриальная", "Индустриальный", "Инский", "Иркутская", "Иртышская", "Иртышский", "Истомина", "Кабельная", "Кавалерийский", "Кавказская", "Кадровый", "Казанская", "Казарменный", "Казачья Гора", "Калараша", "Калинина", "Калининская", "Камышовый", "Карельский", "Карла Маркса", "К. Маркса", "Картографический", "Каширская", "Каширский", "Ким Ю Чена", "Кирова", "Кирпичная", "Кирпичный", "Клубная", "Клубный", "Комсомольская", "Кооперативная", "Корабельная", "Королева", "Космическая", "Костромская", "Костромской", "Кочнева", "Красина", "Красноармейская", "Краснодарская", "Краснодарский", "Краснознаменная", "Краснореченская", "Краснореченский", "Краснофлотская", "Красный Яр", "Криворожская", "Крымская", "Кубанская", "Кубяка", "Куйбышева", "Кустарный", "Кутузова", "Ладожская", "Ладожский", "Лазо", "Лейтенанта Шмидта", "Ленина", "Ленинградская", "Ленинградский", "Ленская", "Лермонтова", "Листопадная", "Литовский", "Локомотивная", "Локомотивный", "Ломоносова", "Луговая", "Льва Толстого", "Л. Толстого", "Магаданская", "Магистральный", "Майская", "Малиновского", "Мариинская", "Марсовая", "Матвеевское", "Мате Залки", "М. Залки", "Матросский", "Машинистов", "Маяковского", "Мельничная", "Менделеева", "Металлистов", "квартал Мира", "Мирная", "Молдавский", "Молодежная", "Монтажная", "Монтажный", "Морская", "Московская", "Мостовая", "Муравьева-Амурского", "Мухина", "Набережная", "Нагишкина", "Нагорная", "Надеждинская", "Народная", "Невская", "Некрасова", "Нефтяная", "Нефтяной", "Новая", "Нововыборгская", "Облачный", "Оборонная", "Оборская", "Океанская", "Окружная", "Октябрьская", "Олега Кошевого", "О. Кошевого", "Орджоникидзе", "Осенняя", "Островского", "Павла Морозова", "П. Морозова", "Павленко", "Павловича", "Панфиловцев", "Панькова", "Парка Мира", "Партизанская", "Первомайская", "Первостроителей", "Перекопская", "Пермская", "Перспективная", "Петра Комарова", "Печерская", "Пилотов", "Пионерская", "Планерная", "Победы", "Пограничный", "Покуса", "Полины Осипенко", "Полоцкий", "Полярная", "Попова", "Портовая", "Постышева", "Почтовая", "Приамурская", "Пригородная", "Приисковая", "Приморская", "Прогрессивная", "Производственная", "Производственный", "Пролетарская", "Промывочная", "Промышленная", "Промышленный", "Проточная", "Профессора Даниловского", "Пугачева", "Путевая", "Пушкина", "Рабочая", "Рабочий Городок", "Радищева", "Рекордная", "Ремесленная", "Ремесленный", "Репина", "Республиканская", "Рокоссовского", "Руднева", "Садовая", "Салтыкова-Щедрина", "Санаторная", "Санитарная", "Санитарный", "Саратовская", "Саратовский", "Свердлова", "Светлая", "Световая", "Свирская", "Свободный", "Связная", "Севастопольский", "Сергеевская", "Серышева", "Сибирская", "Сигнальная", "Сидоренко", "Синельникова", "Слободская", "Служебная", "Соборная", "Советская", "Совхозная", "Сормовский", "Союзная", "Спортивный", "Станционная", "Станционный", "Степной", "Степная", "Стрелочный", "Стрельникова", "Строительная", "Студенческий", "Суворова", "Сунгарийская", "Сысоева", "Ташкентская", "Тимирязева", "Тихоокеанская", "Топографический", "Тополево", "Трамвайная", "Трамвайный", "Трехгорная", "Трубный", "Трудовая", "Трудовой", "Тургенева", "Турнирный", "Тюменский", "Уборевича", "Узловая", "Украинский", "Ульчский", "Ульяновская", "Уральская", "Ургальская", "Урицкого", "Уссурийская", "Уссурийский", "Ухтомского", "Фабричный", "Федеративная", "Федоровское", "Флегонтова", "Фоломеева", "Фрунзе", "Фурманова", "Хабаровская", "Хабаровский", "Халтурина", "Ханкайская", "Холмогорская", "Хорышева", "Хрустальный", "Целинная", "Центральная", "Черепичный", "Чернореченская", "Чернореченское", "Черняховского", "Чехова", "Чкалова", "Шабадина", "Шатова", "Шатурский", "Шевченко", "Шевчука", "Шелеста", "Шеронова", "Шефская", "Шимановская", "Шимановского", "Школьная", "Шкотова", "Шмаковская", "Шмаковский", "Шмидта", "Энергетик", "Энтузиастов", "Юбилейная", "Юнгов", "Юности", "Яровая", "Ярославская", "Ясная", "Ясный", "Яшина", "ДОС"] regions=[ "Центр", "Южный", "Северный", "Приамурский", "Краснореченское", "Хор", "Ракитное", "Сергеевка", "Пригород", "Солнечный", "Осиновая Речка", "Некрасовка", "Корфовский", "Восточное", "Бычиха", "Заозерное", "Благодатное", "Галкино", "Хабаровск-2", "Мирное", "Ильинка", "Переяславка", "Красная Речка", "Березовка", "Калинка" ] import re import os, zipfile def getPhone(str): res = re.findall("(\d{1}-\d+-\d+-\d+-\d+)|(\d+-\d+-\d+)|(\d+-\d+)", str) for x in res[0]: if(x!=''): return x def getRooms(str): res = re.findall("\d-комн", str) if len(res)>0: return res[0] else: return "" def getSize(str): res = re.findall("\d+ кв. м.", str) if(len(res) == 0): return "" else : return re.findall("\d+", res[0])[0] def getType(str): res = re.findall("(кирп\\.)|(стал\\.)|(пан\\.)|(хрущ\\.)", str) if(len(res)!=0): for x in res[0]: if( x != ''): return x return "" def getPrice(str): res = re.findall("([0-9]* тыс\\.)|(\d{3,10}\\.)", str) if(len(res) != 0): if(res[0][0] != ''): res = res[0][0] count = re.findall("(\d+)", res)[0] count+="000" return count else: res = res[0][1] count = re.findall("(\d+)", res)[0] return count else: return "" pathToArchive = './3_2009.zip' zipArchive = zipfile.ZipFile(pathToArchive, 'r') infile=zipArchive.open('data/'+'nedv10.txt', 'r') text=infile.readlines() i=0; for string in text: outfile = open("out"+".csv", "a") i+=1 st="" reg=st for x in streets: if string.find(x)>-1: st=x break for x in regions: if string.find(x)>-1: reg=x break outfile.write(str(i)+"\t"+st+"\t"+reg+"\t"+getRooms(string)+"\t"+getType(string)+"\t"+getSize(string)+"\t\n") outfile.close() print(i)
Офлайн
Xendler
Данные в файлах не структурированные. Необходимо извлечь данные из текстовиков
Гамарника (Шуранова, 5). 3-комн. (13/17, 95/50/16, дом сдан, п/строит.). 8,8 млн. 61-88-05.
Гамарника - Шуранова . 3-комн. (13/17, нов. план., 88/50/13, комн. разд., 2 л/з, после строит., вид на Амур). 7 млн. 890 тыс. 28-31-77.
Гамарника - Шуранова. 3-комн. (дом сдан в 2013 г., монолит, 10/18, 93 кв. м, п/строит., док. готовы). 8 млн. 200-911, 42-10-10.
Тополево, Пионерская. 3-комн. (инд., 2/5, балк., с/у совм., 64/35/9, пластик, частично ремонт). 3,9 млн. 8-924-212-05-01.
Тополево. 3-комн. (2/4, удовл. сост., балк., 65 кв. м). 3 млн. 8-924-214-56-84.
39 магазин. 3-комн. (нов. план., 8/9, кирп., хор. сост., л/з 6 м, 60 кв. м, кухня 8,5 кв. м, все разд., пласт., более 3 лет в собств.). 3,6 млн. 69-16-19.
Xendlerв этой наработке слишком велика вероятность ошибки при распознавании
код в архиве, папка “наработка”
<запись> ::= <адрес> <планировка> <подробности> <цена> <контакт>
<адрес> ::= <улица> | <улица> <район>
<планировка> ::= <число>-комн
<подробности> ::= (<список через запятую>)
<цена> ::= <число> млн | <число>,<число> млн
<контакт> ::= <телефон> | <телефон> <телефон>
<> ::= <>
Отредактировано py.user.next (Апрель 28, 2014 00:11:18)
Офлайн
py.user.nextизвиняюсь, но питон только начал изучать. большей части написанного не понимаю. Не могли бы описать подробнее?
Офлайн
Xendlerсоставь алгоритм решения задачи, без питона
Не могли бы описать подробнее?
Xendlerпотому что оно к питону не относится, это из теории программирования
большей части написанного не понимаю
Офлайн