Python用于解析和修改文本数据-pyparsing模块教程

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Python用于解析和修改文本数据-pyparsing模块教程

Python库解析地址PyParsing

人们普遍认为,Python编程语言的pyparsing 模块是对文本数据进行操作的一个宝贵工具。

用于解析和修改文本数据的pyparsing 包,简化了对地址的操作。这是因为该模块可以转换和帮助解析地址。

在这篇文章中,我们将讨论PyParsing 模块在处理解析以及修改时的用法。让我们看看一个使用PyParsing 模块解析地址的真实例子。

之后,我们将看一个更广泛的例子,以证明PyParsing 如何被用来改变和解析地址数据。

用简单的地址解析PyParsing

让我们首先看看在Python库PyParsing 的帮助下解析地址的一个基本例子。作为第一个例子,让我们看一下下面的地址并对其进行解析。

567 Main Street
AI 代码解读

按照这些步骤来解析这个地址:

1.导入pyparsing 库

首先,我们将通过提及* 来导入pyparsing 库及其所有的模块和函数。

from pyparsing import *
AI 代码解读

2.创建一个变量

现在我们将创建一个变量,并将其分配给我们要解析的地址。

address = "567 Main Street"
AI 代码解读

3.分解

现在我们将通过提及nums 和alphas 来分解地址部分。

addressParser = Word(nums) + Word(alphas) + Word(alphas)
AI 代码解读

现在我们将创建一个变量并从库pyparsing 中调用parseString 。

addressParts = addressParser.parseString(address)
AI 代码解读

4.打印

最后,我们将打印该变量并查看结果。

print(addressParts)
AI 代码解读

让我们写下整个代码并运行它来看看结果。

from pyparsing import *
address = "123 Main Street FL"
addressParser = Word(nums) + Word(alphas) + Word(alphas) + Word(alphas)
addressParts = addressParser.parseString(address)
print(addressParts)
AI 代码解读

输出:

['123', 'Main', 'Street', 'FL']
AI 代码解读

这段代码将把地址解析成四个部分:街道号码、街道名称、街道类型和地址所在的州。

街道号码将是第一部分,街道名称将是第二部分,街道类型将是第三部分,而州将是最后一部分。

四个有用的功能PyParsing

我们可以使用四个可用的函数之一来进行实际解析。

  • ParseString – 通过parseString ,你可以从头开始解析文本,而不必担心结尾的不必要的内容。
  • ScanString – ScanString 搜索输入字符串中的匹配词,有点像re.finditer() 。
  • SearchString – SearchString 与scanString 相似,只是它不返回单个标记,而是提供一个标记的集合。
  • TransformString – TransformString 类似于scanString ,但允许你用你选择的其他标记代替。

用PyParsing 从CSV文件解析地址

地址信息是CSV文件中经常记录的一个特定数据。因为它们在结构上有很大的不同,所以可能很难解析。

pyparsing 模块使用定义的结构简化了从CSV文件中提取地址的过程。首先,让我们为如何正确解析地址定义几个直接的准则和函数。

之后,我们将把这些原则应用于解析含地址的CSV文件。

假设我们的配置文件或地址的CSV文件看起来像这样:

city=LAUDERDALE, state=FL, Zipcode: 33316
AI 代码解读

我们将不得不以key=value 格式来解析这个字符串。一个KEY=VALUE 字符串有三个部分:键、等号和值。

在解析这样一个表达式的最终输出中包括等号是不必要的。可以使用Suppress() 方法来防止标记被包括在输出中。

代号的名称可以由setResultsName() 函数提供,也可以在构建解析器时将名称作为参数调用解析器,这使得检索特定的代号变得稍微简单明了。令牌最好有与之相关的名称。

让我们试试这段代码,看看pyparsing 如何与CSV文件一起工作。

我们将首先导入pyparsing 库及其所有的函数和模块。

from pyparsing import *
AI 代码解读

其次,我们将为输入的key 部分创建一个变量,用于输出。我们会提到alphanums ,因为地址的数据集可以包含字母和数字。

key = Word(alphanums)('key')
AI 代码解读

我们想从CSV文件的输出中删除= 符号。我们将使用Suppress 函数。

equals = Suppress('=')
AI 代码解读

现在,我们将为value 部分制作一个变量。而且,我们将再次提到alphanums ,因为地址的数据集可以包含字母和数字。

value = Word(alphanums)('value')
AI 代码解读

现在,我们将创建另一个变量来串联这些变量。

keyValueExpression = key + equals + value
AI 代码解读

现在我们将使用文件格式化打开我们的CSV地址文件。并使用file.read 函数来读取文件中的每个数据。

with open('/address.csv') as address_file:
  address_file = address_file.read()
AI 代码解读

在这之后,我们将使用for 循环与scanString 函数或pyparsing 来逐一读取地址的每一行。

for adrs in keyValueExpression.scanString(address_file):
  result = adrs[0]
AI 代码解读

最后,我们将使用print 函数来查看结果。

print("{0} is {1}".format(result.key, result.value))
AI 代码解读

我们的代码到此结束,现在我们将写下整个代码来运行它。并看看当我们提供一个带有地址的CSV文件时,我们会得到什么输出。

#import library
#Python小白学习交流群:153708845
from pyparsing import *
key = Word(alphanums)('key')
#delet = from the output
equals = Suppress('=')
value = Word(alphanums)('value')
keyValueExpression = key + equals + value
#use file formating to open csv file
with open('/content/address.csv') as address_file:
  address_file = address_file.read()
#use for loop to read your CSV file
for adrs in keyValueExpression.scanString(address_file):
  result = adrs[0]
#print the output
  print("{0} is {1}".format(result.key, result.value))
AI 代码解读

输出:

city is LAUDERDALE
state is FL
AI 代码解读

代码的输出显示了我们的文件所包含的数据。在address.csv 文件中,我们只有一个地址。

而且你可以看到使用pyparsing 库的功能,因为地址被解析了。

PyParsing 在将文本解析为标记并检索或替换单个标记时,”L “提供了一个比正则表达式更强大和成熟的替代方案。

例如,嵌套字段对PyParsing ,但对正则表达式来说是没有问题的。这个分析器更像是老式的备用程序,如lex 和yacc 。

换句话说,正则表达式可以用来搜索标签并从HTML中提取数据,但它们不能用来验证HTML文件。然而,pyparsing 将允许你完成这个任务。

我们希望你觉得这篇文章对理解 Python 中使用的地址解析器有帮助。

相关文章
数据大爆炸:解析大数据的起源及其对未来的启示
数据大爆炸:解析大数据的起源及其对未来的启示
45 14
数据大爆炸:解析大数据的起源及其对未来的启示
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
8天前
|
解析电商商品详情API接口系列,json数据示例参考
电商商品详情API接口是电商平台的重要组成部分,提供了商品的详细信息,支持用户进行商品浏览和购买决策。通过合理的API设计和优化,可以提升系统性能和用户体验。希望本文的解析和示例能够为开发者提供参考,帮助构建高效、可靠的电商系统。
25 12
深度解析:利用商品详情 API 接口实现数据获取与应用
在电商蓬勃发展的今天,数据成为驱动业务增长的核心。商品详情API接口作为连接海量商品数据的桥梁,帮助运营者、商家和开发者获取精准的商品信息(如价格、描述、图片、评价等),优化策略、提升用户体验。通过理解API概念、工作原理及不同平台特点,掌握获取权限、构建请求、处理响应和错误的方法,可以将数据应用于商品展示、数据分析、竞品分析和个性化推荐等场景,助力电商创新与发展。未来,随着技术进步,API接口将与人工智能、大数据深度融合,带来更多变革。
13 3
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。
基于Java的Hadoop文件处理系统:高效分布式数据解析与存储
本文介绍了如何借鉴Hadoop的设计思想,使用Java实现其核心功能MapReduce,解决海量数据处理问题。通过类比图书馆管理系统,详细解释了Hadoop的两大组件:HDFS(分布式文件系统)和MapReduce(分布式计算模型)。具体实现了单词统计任务,并扩展支持CSV和JSON格式的数据解析。为了提升性能,引入了Combiner减少中间数据传输,以及自定义Partitioner解决数据倾斜问题。最后总结了Hadoop在大数据处理中的重要性,鼓励Java开发者学习Hadoop以拓展技术边界。
36 7
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
120 2
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是"将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。创建型模式分为5种:单例模式、工厂方法模式抽象工厂式、原型模式、建造者模式。
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象之间怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及算法与对象间职责的分配。行为型模式分为类行为模式和对象行为模式,前者采用继承机制来在类间分派行为,后者采用组合或聚合在对象间分配行为。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象行为模式比类行为模式具有更大的灵活性。 行为型模式分为: • 模板方法模式 • 策略模式 • 命令模式 • 职责链模式 • 状态模式 • 观察者模式 • 中介者模式 • 迭代器模式 • 访问者模式 • 备忘录模式 • 解释器模式
【23种设计模式·全精解析 | 行为型模式篇】11种行为型模式的结构概述、案例实现、优缺点、扩展对比、使用场景、源码解析
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析
结构型模式描述如何将类或对象按某种布局组成更大的结构。它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象。由于组合关系或聚合关系比继承关系耦合度低,满足“合成复用原则”,所以对象结构型模式比类结构型模式具有更大的灵活性。 结构型模式分为以下 7 种: • 代理模式 • 适配器模式 • 装饰者模式 • 桥接模式 • 外观模式 • 组合模式 • 享元模式
【23种设计模式·全精解析 | 创建型模式篇】5种创建型模式的结构概述、实现、优缺点、扩展、使用场景、源码解析

热门文章

最新文章

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等