У меня есть группа из 7 файлов, содержащих неструктурированные данные, которые я пытаюсь проанализировать на 7 разных наборах данных в Python, которые я получил с помощью beautifulsoup. Существует несколько различных способов представления данных, и я изо всех сил стараюсь найти правильный метод с помощью регулярных выражений или других пакетов синтаксического анализа.Анализ неструктурированных данных из BeautifulSoup в структурированные наборы данных
я вставил фрагмент данных Pastebin: http://pastebin.com/sC9KbhbF
Выходные данные будут выглядеть следующим образом (я просто использовать трубу для разделения полей, чтобы проиллюстрировать, я хотел бы их как отдельные столбцы для вывода):
Street | City | Postal Code
jln.sidomulyo i-vi | cepu | 58312
jln.sitimulyo | cepu | 58312
lr.sitimulyo i-vi | cepu | 58312
lr.sitimulyo ia-iiia | cepu | 58312
lr.sitimulyo ib-iiib | cepu | 58312
lr.sitimulyo ic | cepu | 58312
lr.sitimulyo iic | cepu | 58312
jln.sorogo | cepu | 58313
.....
jln.akhmad dakhlan kel.ciamis | ciamis | 46211
jln.akhmad dakhlan kel.linggasari | ciamis | 46216
.....
узоры, которые делают это трудно:
1) Ввод адреса запятыми (например, Л.Р. sitimulyo I-VI, IA-IIIA) по отдельным линиям, сохраняя полное название улицы
2) Исключите пробелы после. период f или двухбуквенные префиксы (например, жилая комната sitimulyo против jln.sidomulyo)
3) капает вниз название улицы для вложенных адресов (например, jln.akhmad dakhlan kel.ciamis, jln.akhmad dakhlan kel.linggasari)
Я попытался несколько различных методов, но есть даже не получил удаленно близко к далеко, поэтому я не включил эти фрагменты. Код, который я использовал для получения данных ниже:
from bs4 import BeautifulSoup
import urllib2
import re
import bleach
import pandas
url_base = "http://www.indonesianewsonline.com/prangko/stamps"
url_seed = url_base + "/kodepos.htm"
content = urllib2.urlopen(url_seed).read()
soup = BeautifulSoup(content)
#print soup.prettify()
additional_links = []
for link in soup.findAll('a', href=True, text=re.compile('Cities*')):
additional_links.append(link['href'])
links_to_scrape = [url_base + "/" + s for s in additional_links]
data_files = []
for s in links_to_scrape:
a = BeautifulSoup(urllib2.urlopen(s).read())
data_files.append(a.findAll('pre'))