广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python结构化字符串中提取数据详情
  • 505
分享到

Python结构化字符串中提取数据详情

2024-04-02 19:04:59 505人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录前言从结构化字符串中提取数据字符串解析前言 在许多自动化任务中,我们都需要从已知格式结构化的输入文本中提取相关信息。例如,我们可能需要在一段电影评论数据中提取观影时间、电影名、评

前言

在许多自动化任务中,我们都需要从已知格式结构化的输入文本中提取相关信息。例如,我们可能需要在一段电影评论数据中提取观影时间、电影名、评分等信息,以便存储后进行进一步分析。在本节中,我们将以提取电影评论数据信息为例讲解如何从结构化字符串中提取数据。

从结构化字符串中提取数据

假设我们具有以下结构的电影评分数据,我们需要解析存储观影时间、电影名、评分等信息:

[<Timestamp>] - MOVIE ID: <movie id> - MOVIE NAME: <movie name> - SCORE: <score of the movie>

例如,一条可能的电影评分记录如下所示:

[2022-08-01T11:58:41.504054] - MOVIE ID: 00015 - MOVIE NAME: Inception - SCORE: 8.5

其中,我们使用标准格式表示时间和日期,这在计算机中广泛应用。

字符串解析

首先,导入所需库,并给出所需解析的用户对电影的评分记录:

>>> import delorean
>>> from decimal import Decimal
>>> text = '[2022-08-01T11:58:41.504054] - MOVIE ID: 00015 - MOVIE NAME: Inception - SCORE: 8.5'

将评分记录使用 split() 方法拆分为多个部分,我们使用 “-” 作为分隔符拆分每个元素,将评分记录拆分为 4 部分——时间戳、电影 ID、电影名和电影评分,便于之后将它们解析为正确的类型:

>>> divided_text = text.split(' - ')
>>> divided_text
['[2022-08-01T11:58:41.504054]', 'MOVIE ID: 00015', 'MOVIE NAME: Inception', 'SCORE: 8.5']
>>> timestamp, movie_id, movie_name, score = divided_text

将时间戳解析为 datetime 对象。由于在评分记录中时间戳包含在方括号中,为了正确解析时间戳,需要去掉括号,然后使用 delorean 模块将其解析为日期时间对象:

>>> timestamp = delorean.parse(timestamp.strip('[]'))
>>> timestamp
Delorean(datetime=datetime.datetime(2022, 1, 8, 11, 58, 41, 504054), timezone='UTC')

将 movie_id 解析为整数。为了解析电影 ID,需要使用冒号作为分隔符拆分 movie_id,然后,将最后一个元素解析为整数:

>>> movie_id = int(movie_id.split(':')[-1])
>>> movie_id
15

将评分解析为 Decimal 类型。为了解析电影评分,我们同样使用冒号作为分隔符拆分 score,并将其解析为十进制字符对象 Decimal (这是由于此值解析为浮点类型会改变精度):

>>> score = Decimal(score.split(':')[-1])
>>> score
Decimal('8.5')

为了便于解析和聚合,我们可以将所解析的数据组合在一起成为一个对象。例如,我们可以通过在 python 代码中定义一个类,来方便的解析和聚合结构化字符串中的数据:

class Movie(object):
    def __init__(self, timestamp, movie_id, movie_name, score):
        self.timestamp = timestamp
        self.movie_id = movie_id
        self.movie_name = movie_name
        self.score = score
        
    def __repr__(self):
        return '<Movie ({}, {}, {})>'.fORMat(self.timestamp, self.movie_id, self.movie_name, self.score)

    @claSSMethod
    def parse(cls, text):
        '''
        Parse from a text with the format
        [<Timestamp>] - MOVIE ID: <movie id> - MOVIE NAME: <movie name> - SCORE: <score of the movie>
        to a Movie object
        '''
        divided_text = text.split(' - ')
        timestamp, movie_id, movie_name, score = divided_text
        timestamp = delorean.parse(timestamp.strip('[]'))
        movie_id = int(movie_id.split(':')[-1])
        movie_name = movie_name.split(':')[-1]
        score = Decimal(score.split(':')[-1])
        return cls(timestamp=timestamp, movie_id=movie_id, movie_name=movie_name, score=score)

定义 Movie 类完成后,我们可以使用以下方式方便的对评分记录进行解析:

>>> Movie.parse(text)
<Movie (Delorean(datetime=datetime.datetime(2022, 1, 8, 11, 58, 41, 504054), timezone='UTC'), 15,  Inception)>

到此这篇关于Python 结构化字符串中提取数据详情的文章就介绍到这了,更多相关Python 提取数据内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python结构化字符串中提取数据详情

本文链接: https://www.lsjlt.com/news/120134.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python结构化字符串中提取数据详情
    目录前言从结构化字符串中提取数据字符串解析前言 在许多自动化任务中,我们都需要从已知格式结构化的输入文本中提取相关信息。例如,我们可能需要在一段电影评论数据中提取观影时间、电影名、评...
    99+
    2022-11-11
  • 结构化数据和非结构化数据的提取【Python篇】
    结构化数据和非结构化数据的提取【Python篇】 总结一下Pyhon提供的可以提取结构化数据以及非结构化数据的主流库。 1.常见数据的分类: 依据响应分类(附带对应的常用的解析方法~): 结构化...
    99+
    2023-09-06
    python 数据的提取 json和jsonpath模块 re和xpath模块 bs4和pyquery库
  • 怎么用python提取字符串中的数字
    这篇“怎么用python提取字符串中的数字”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用python提取字符串中的数字...
    99+
    2023-06-29
  • 详解Python3中字符串中的数字提取方法
    逛到一个有意思的博客在里面看到一篇关于ValueError: invalid literal for int() with base 10错误的解析,针对这个错误,博主已经给出解决办法,使用的是re.sub...
    99+
    2022-06-04
    字符串 详解 数字
  • 如何利用python提取字符串中的数字
    目录一、isdigit()函数二、filter() 函数三、提取一段字符串中的数字四、匹配指定字符串开头的数字五、匹配时间,17:35:24六、匹配时间,20181011 15:28...
    99+
    2022-11-13
  • 如何使用Python从字符串中提取数字?
    在Python中,有时候需要从字符串中提取特定的数字信息,这种操作很常见。例如,从一篇新闻报道中提取新闻发布日期、从一篇小说中提取章节编号等。那么,如何使用Python从字符串中提取数字呢?本文将介绍几种方式。 阅读更多:Python...
    99+
    2023-08-31
    mysql 数据库 python
  • Python的字符串和常用数据结构有哪些
    本篇内容介绍了“Python的字符串和常用数据结构有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用字符串第二次世界大战促使了现代电子...
    99+
    2023-06-01
  • C语言数据结构与算法之字符串详解
    目录串的定义串的比较 串的抽象数据类型串的初始化相关定义初始化定长类初始化串的堆式顺序存储结构(Heap)初始化堆字符串 赋值操作比较两个堆字符串的大小 串的定义...
    99+
    2022-11-12
  • redis内部数据结构之SDS简单动态字符串详解
    前言 reids 没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组)而是构建了一种名为简单动态字符串的抽象类型,并为redis的默认字符串表示,因为C字符串不能满足redis对字符串的安全性、效率...
    99+
    2022-06-04
    数据结构 字符串 详解
  • 从零开始学Python:第九课-常用数据结构之字符串
    接着上期的Python教程讲,视频教程你们私我要的,整理出来了:Python 900集全套视频教程(全家桶)https://pan.baidu.com/s/1cU5lDWq9gh0cQ7hCnXUiGA,你们好好学。第二次世界大战促使了现代...
    99+
    2023-06-01
  • Python学习教程100天(Python学习路线):Day07字符串和常用数据结构
    字符串和常用数据结构使用字符串第二次世界大战促使了现代电子计算机的诞生,当初的想法很简单,就是用计算机来计算的弹道,因此在计算机刚刚诞生的那个年代,计算机处理的信息主要是数值,而世界上的第一台电子计算机ENIAC每秒钟能够完成约5000次浮...
    99+
    2023-06-02
  • 详解Python数据类型、进制转换、字符串格式化的问题
    目录1. 整数、浮点数和复数浮点数Decimal复数2.进制转换进制数字类型整型进制操作3. 字符串3.1 转义字符3.2 字符串取值4. 字符串运算与转换5. 字符串的常用方法判断...
    99+
    2022-11-10
  • 使用golang中的json.MarshalIndent函数将结构体转换为格式化的JSON字符串
    使用golang中的json.MarshalIndent函数将结构体转换为格式化的JSON字符串在使用Golang编写程序时,我们经常需要将结构体转换为JSON字符串,在这个过程中,json.MarshalIndent函数可以帮助我们实现格...
    99+
    2023-11-18
    Golang JSON struct
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作