首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从半结构化数据中提取结构化数据

从半结构化数据中提取结构化数据
EN

Data Science用户
提问于 2021-02-22 17:34:51
回答 1查看 52关注 0票数 0

我希望使用机器学习和NLP将文本文件中的半结构化数据转换为结构化数据,方法是预测文件中的模式并分割字段,例如,如果我有一个类似于以下内容的文本文件:

投入:

代码语言:javascript
复制
2021565267MALL1ETAGE ZARA1st FLOOR 2345561
2022565267MALL2ETAGE ZARA1st FLOOR 2345561
2022565267ANFAPLACE2ETAGECOFEESHOP2345561
20225652634ANFAPLACE2ETAGE 2345561

期望产出:

代码语言:javascript
复制
2021565267,MALL1ETAGE ZARA1st FLOOR,2345561
2022565267,MALL2ETAGE ZARA1st FLOOR,2345561
2022565267,ANFAPLACE2ETAGECOFEESHOP,2345561
20225652634,ANFAPLACE2ETAGE,2345561

这些半结构化文件不是固定宽度的,所以我们不能只在熊猫中添加这样的col规范(例如,它可以用于第一行):

代码语言:javascript
复制
col_specification =[(1, 10),.... ]

我在网上发现的一种方法是根据半结构化文件中单词的出现来制作字典,在这种情况下,这种方法会起作用吗?如果是这样的话,我如何实现这样的东西呢?

EN

回答 1

Data Science用户

发布于 2021-05-06 05:01:06

我现作出以下假设:

  1. 第一列数字是每一行的前几位数/数。
  2. 最后一列数字是每一行的最后几个数字/数字。
  3. 因此,在第二栏中,像MALL1ETAGE ZARA1st FLOOR这样的文本不应该在前面或结尾有数字。因此,20215652671MALL1ETAGE ZARA1st FLOOR 2345561将被解释为20215652671, MALL1ETAGE ZARA1st FLOOR, 2345561而不是2021565267, 1MALL1ETAGE ZARA1st FLOOR, 2345561

为此,可以使用以下方法使用正则表达式来捕获第一组和最后一组数字:

代码语言:javascript
复制
import re

re.findall("^([0-9]+)(.*?)([0-9]+)$", "2021565267MALL1ETAGE ZARA1st FLOOR 2345561")
# [('2021565267', 'MALL1ETAGE ZARA1st FLOOR ', '2345561')]

strip()应用于每个结果将移除尾随空格,以获得所需的输出。

票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/89756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档