Как я могу преобразовать неструктурированную строку в фрейм данных? - PullRequest
0 голосов
/ 14 октября 2019

У меня есть длинный текст строки, который я хотел бы преобразовать в кадр данных для анализа. Пожалуйста, смотрите ниже образец данных ниже. Мне бы хотелось, чтобы столбцы были «Объект», «Улица», «Город», «Телефон» и «Часы работы магазина».

string = AlaskaUSCG Base Ketchikan 1300 Stedman Street  Ketchikan, AK  (907) 228-0250 Mon-Fri 7:30am-5pm | Sat 10am-4pm | Closed Sunday USCG Base Kodiak Albatros Avenue, Building 26 (2nd Floor)  Kodiak, AK  (907) 487-5773 USCG Base Kodiak Albatros Avenue, Building 26 (1st Floor)  Kodiak, AK  (907) 487-5773 Mon-Fri: 7am-9pm | Sat: 9am-9pm |

Я использовал StringIO для преобразования его в фрейм данных, но онпреобразует его в фрейм данных с 0 строками и 1000 столбцами. Вместо этого я хотел бы, чтобы столбцы, о которых я упоминал выше, и строки для каждого магазина.

Я ожидаю, что это будет выглядеть так с данными, заполненными в виде строк:

Facility                    Street               City           Phone   
Alaska USCG Base Ketchikan  1300 Stedman Street  Ketchikan, AK  (907) 228 0250

1 Ответ

1 голос
/ 14 октября 2019

Вы можете использовать простые методы очистки веб-страниц, такие как bs4 и requests.

import bs4 

r = requests.get(URL)
b = bs4.BeautifulSoup(r.text)

addresses = []

for val in b.find_all(name='p'):
  s = list(val.stripped_strings)
  if s and not s[0].startswith('HOURS'): addresses.append(' '.join(s[:-1]))
...