将非结构化数据从BeautifulGroup解析为结构化数据集

2024-10-02 08:22:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组包含非结构化数据的7个文件,我正试图用Python将它们解析成7个不同的数据集,这些数据集是我使用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) 用逗号(例如lr。sitimulyo i-vi,ia iiia)在单独的线路上保持完整的街道名称
2) 消除两个字母前缀句点后的空格(例如lr。sitimulyo vs。sidomulyo路)
3) 删除嵌套地址的街道名称(例如。akhmad路达克兰凯尔·西亚米斯, akhmad路达克兰克尔林加萨里)在

我尝试过一些不同的方法,但还没有接近到目前为止,所以我没有包括那些片段。我用来获取数据的代码如下:

^{pr2}$

Tags: 数据方法viialrpastebinkeliiia
1条回答
网友
1楼 · 发布于 2024-10-02 08:22:13

它的工作原理如下:首先使用这些regex和replection使输入文本更易于管理:

",[ ]*\n[ ]*" replace this with a single comma ","
"\.{2,}" replace this with a single whilte space " "
", " (comma and space) replace it with a single comma ","
"\. " (point a space) replace it with a single point "."
"^[ ]*" any space at the start replace with nothign ""

那么你可以使用这个正则表达式

^{pr2}$

如果我们走现在转变的第一条线

jln.sidomulyo i-vi cepu 58312 

您可以看到(注意arg1前面实际上有一个新的折线图,因此您最好检查它是否存在并将其删除)

arg1:   jln.sidomulyo
arg2:   i-vi
arg3:   cepu
arg4:   58312

如果我们用这样的格式

lr.sitimulyo i-vi,ia-iiia,ib-iiib,ic,iic cepu 58312 

您可以看到(arg1在arg1[0]上有新行,您需要删除它)

arg1:   lr.sitimulyo
arg2:   i-vi,ia-iiia,ib-iiib,ic,iic
arg3:   cepu
arg4:   58312

在这里,当您通过“,”字符将arg2拆分时,需要对其进行itterate,并使入口像这样。在

唯一的问题是这些线路

lr.taman siswa i-vii,ia,ib,v/17 cepu 58311 

你有一个基本的5个空格(或者更多的我想)和基本的arg1需要所有的东西,直到这一部分我假设“i-vii,ia,ib,v/17”。应该有一个简单的解决办法,但我想不出来

哎哟,忘了加这样的台词

jln.sitimulyo cepu 58312 

本质上没有arg4,所以您只需查看arg4是否为空或不存在(不知道它在python中是如何工作的)

我希望有帮助

相关问题 更多 >

    热门问题