Python 如何将非结构化字符串转换为数据帧?
我有一个长字符串文本,我想将其转换为数据帧进行分析。请参阅下面的数据示例。我想列为“设施”、“街道”、“城市”、“电话”和“商店营业时间” 我使用StringIO将其转换为数据帧,但它将其转换为具有0行和1000列的数据帧。相反,我希望上面提到的列和每个商店的行 我希望数据填充为行时会是这样:Python 如何将非结构化字符串转换为数据帧?,python,string,pandas,dataframe,data-manipulation,Python,String,Pandas,Dataframe,Data Manipulation,我有一个长字符串文本,我想将其转换为数据帧进行分析。请参阅下面的数据示例。我想列为“设施”、“街道”、“城市”、“电话”和“商店营业时间” 我使用StringIO将其转换为数据帧,但它将其转换为具有0行和1000列的数据帧。相反,我希望上面提到的列和每个商店的行 我希望数据填充为行时会是这样: Facility Street City Phone Alaska USCG Base Ketchikan 1
Facility Street City Phone
Alaska USCG Base Ketchikan 1300 Stedman Street Ketchikan, AK (907) 228 0250
您可以使用简单的web抓取技术,例如
bs4
和请求
import bs4
r = requests.get(URL)
b = bs4.BeautifulSoup(r.text)
好了,网站比原始字符串更能满足您的需求。阅读一下
BeautifulSou
p以及如何解析XML文件(在本例中为HTML)。您希望提取p
标记之间的值(即value)并清除这些值。首先使用一些库获取.HTML文件(如urllib
或requests
库),并尝试阅读一些基本示例,了解如何使用bs4
@rafaelc解析这些库的响应感谢您的帮助。实际上,我最初尝试使用beautifulsou
来获取信息,但在使其正常工作时遇到了问题,因此我转而尝试一些字符串操作。
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]))