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

Unreal Insights 实战:从启动到深度解析渲染管线 本文详细介绍了Unreal Insights性能分析工具的核心使用方法。从如何启动Trace Sessions并捕获.utrace文件开始,逐步深入解析渲染管线的时间轴视图,包括InitViews、MeshDrawCommand、动态阴影构建及Slate UI渲染等关键阶段,帮助开发者精准定位性能瓶颈,实现从宏观指标到微观执行的深度性能优化。 阅读详情

Python库解析地址PyParsing

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

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

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

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

用简单的地址解析PyParsing

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

567 Main Street

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

1.导入pyparsing 库

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

from pyparsing import *

2.创建一个变量

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

address = "567 Main Street"

3.分解

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

addressParser = Word(nums) + Word(alphas) + Word(alphas)

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

addressParts = addressParser.parseString(address)

4.打印

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

print(addressParts)

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

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

输出:

['123', 'Main', 'Street', 'FL']

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

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

四个有用的功能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

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

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

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

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

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

from pyparsing import *

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

key = Word(alphanums)('key')

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

equals = Suppress('=')

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

value = Word(alphanums)('value')

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

keyValueExpression = key + equals + value

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

with open('/address.csv') as address_file:
  address_file = address_file.read()

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

for adrs in keyValueExpression.scanString(address_file):
  result = adrs[0]

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

print("{0} is {1}".format(result.key, result.value))

我们的代码到此结束,现在我们将写下整个代码来运行它。并看看当我们提供一个带有地址的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))

输出:

city is LAUDERDALE
state is FL

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

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

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

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

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

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

保姆级避坑指南:在Win10上从零安装ROS2 Humble(含Chocolatey、Python3.8.3、VS2019完整配置) 本文提供了一份详细的Windows 10平台ROS2 Humble安装指南,涵盖从环境准备到依赖安装、Python环境配置、编译工具链设置及环境变量调整的全过程。特别针对官方文档未提及的常见陷阱和解决方案,帮助用户顺利完成ROS2的安装与验证。 阅读详情

相关推荐

python 用于解析复杂文本数据的库PyParsing

与正则表达式不同的是,PyParsing 可以处理更复杂的结构,比如嵌套的语法结构、多个语法结构的交叉等等。但是,如果你需要解析复杂的文本数据,PyParsing 是一个非常强大的工具,值得一试。通过定义基本的 token,再利用PyParsing提供的 infixNotation ,就可以很方便的定义出中序表达式的语法结构,并解析 texts。需要注意的是,由于 JSON 的语法比较复杂,这个例子中的语法定义也比较复杂。在实际使用中,可以根据需要简化语法定义,或者使用现成的 JSON 解析库。

zhangzhechun的专栏 1091

pyparsing简介

pyparsing 是一个 Python 库,用于解析文本。pyparsing 的主要优点是它具有良好的可读性和可维护性,因此非常适合用于解析复杂的文本格式。需要注意的是,这个例子只是简单的演示了如何使用 pyparsing 解析一个简单的数学表达式,pyparsing 是一个非常强大的工具,它可以用来解析各种各样的文本格式,并且支持自定义语法规则。pyparsing 提供了一组基本的解析元素,如字符串、正则表达式、整数、浮点数等,还提供了一些高级的解析元素,如语法规则、可选元素、循环元素等。

m0_57236802的博客 2577

Python解析器深度探索:语法解析与应用

在计算机科学中,token是一个基本的语法单位,它代表了编程语言中最小的独立元素。在词法分析过程中,源代码文本被转换为一系列的token,每个token对应一种特定的符号类型,例如关键字、操作符、标识符或字面量。token通常可以分为几类:关键字: 编程语言中保留的词,如Python中的defreturnifelse等。标识符: 用户定义的名称,例如变量、函数和类的名称。字面量: 直接在代码中表示的值,比如数字、字符串和布尔值。操作符。

weixin_42466857的博客 625

pyparsing,一个超实用的Python库!

pyparsing是一个强大的文本解析库,能够轻松解析复杂的文本格式,常用于读取配置文件、数据文件等场景,是 Python 程序员处理文本的得力工具。

黑马非马的博客 1886

Python数据可视化与绘图课程项目

Python 是一种广泛使用的高级编程语言,以其简洁明了的语法和强大的功能而闻名。自1989年诞生以来,它逐渐成为IT行业和科研领域的首选工具之一。Python支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。它具有丰富的内置数据结构和简洁的控制流程语句,使得代码编写更加直观和高效。Python的广泛应用不仅限于网络开发、数据分析、人工智能等领域,还涵盖系统自动化、科学计算以及教育和研究。

weixin_33240461的博客 1115

保姆级教程:5分钟搞定微信小程序live-player组件接入监控视频流

本文提供了一份详细的微信小程序接入实时监控视频流的实战指南。文章对比了live-player与video组件的核心差异,重点解析了如何申请并开通live-player组件的严格权限,并提供了播放RTMP流(低延迟)的完整配置、状态监听与错误处理代码。同时,也介绍了使用video组件播放HLS流的备选方案,帮助开发者根据项目需求快速选择并实现稳定可靠的监控视频播放功能。

open4的博客 297

使用Pyparsing处理复杂文本

当然,pyparsing还有很多其他的功能和特性,比如定义嵌套的解析规则、使用解析结果做进一步的处理、支持各种操作符等。如果你需要处理复杂的文本,或者需要创建自己的文本解析器,那么pyparsing绝对是一个值得关注和学习的库。然而,有时候,我们需要处理的文本非常复杂,而Python内置的功能可能不足以满足我们的需求。alphas是一个字符串,包含了所有的字母,nums是一个字符串,包含了所有的数字。然后,我们定义了一个解析规则parser,这个规则表示一个字符串由多个单词和空格组成。

小小张说故事的博客 661

SFR算法实现详解:从边缘检测到MTF计算的完整流程

本文详细解析了SFR算法从边缘检测到MTF计算的完整流程,包括边缘检测、ESF超采样、LSF差分等关键步骤。通过代码示例和实战经验,帮助开发者高效实现成像系统解析力评估,优化MTF测量精度。适用于摄像头模组调试、工业检测等场景。

Black的专栏 1010

Using the pyparsing module - 使用pyparsing模块

1 操作步骤为了解析输入的数据字符串,客户端代码必须遵循如下步骤:1. 首先,定义要匹配的各种标记(token)和模式(pattern),并且将其赋值给程序变量。可选的结果名称和解析动作也可以被定义出来。2. 基于上面的变量调用parseString()或scanString()并传入一个需要解析的字符串。在解析的过程中,whitespace字符会被忽略掉(当然也可以改变这种...

weixin_33795806的博客 592

爬取百度图片

最开始,我们想要爬取图片,首先需要打开百度图库,然后在搜索栏中输入自己想要的图片(比如说壁纸)。接着右键检查,点击网络:起初可能没有名称信息,刷新界面就可以了。打开信息,查看标头内容可以看到请求URL为:复制这串URL,然后在浏览器中打开这个就是我们搜索的壁纸图片的网页内容。怎么找到图片的URL呢?在上述内容中,找到data,可以发现里面每隔一个aiEditData,下面代码的形式是一样的,就相当于一张图片。

weixin_54143563的博客 1943

英飞凌TC397芯片时钟树详解:从EB-tresos配置到PLL锁相环实战避坑

本文详细解析了英飞凌TC397芯片的时钟树架构,从EB-tresos配置到PLL锁相环的实战应用,帮助工程师避免常见配置陷阱。文章深入探讨了时钟源层、频率转换层和分配网络层的设计原理,提供了PLL配置的数学公式和EB-tresos关键容器的配置要点,并分享了调试技巧与性能优化实践,适用于MCU开发中的时钟管理需求。

weixin_42524226的博客 212

Python pyparsing 库介绍

pyparsing是 Python 中的一个强大的解析工具库,用于定义和处理复杂的语法和文本解析。与传统正则表达式相比,它更易于阅读和维护,尤其适合处理层次化结构的文本。主要特点直观的语法定义使用面向对象的方式定义语法规则。通过组合基础解析器(如字符串、数字、标点等)构建复杂规则。递归解析支持适合处理嵌套结构(例如数学表达式、JSON、XML 等)。无需手写解析器使用库提供的构造器和方法自动完成解析工作。强大的错误处理在定义规则时可以添加错误提示和恢复逻辑。核心概念解析器 (所有规则的基类。

Debug yourself! 976

yolov8 PTQ和QAT量化实战(源码详解)

量化():是指将高精度浮点数(FP32)转换为低精度(8bit或4bit)整数的过程,它是模型部署中的一种非常重要的优化方法,可以在较少的精度损失下,大幅提供神经网络的效率和性能。目前主流的神经网络量化方式有PTQ和QATPTQ是训练后量化(),无需数据集和训练,直接量化模型权重QAT是量化感知训练(),量化后需要在数据集上继续微调训练。QAT过程中,我们首先需要选择哪些层需要进行finetune训练,并利用FP32对应层的输出作为监督进行训练。

@bangbang的博客 5329

Python 地址解析器

我们将使用 pyparsing 库手动解析地址,并使用函数或 pyparsing 获取 CSV 文件中的地址。在本文中,我们将讨论 PyParsing 模块用于处理解析和修改的用法。让我们首先看一个在 Python 库 PyParsing 的帮助下解析地址的基本示例。在此之后,我们将使用带有 scanString 函数或 pyparsing 的 for 循环来逐行读取地址的每一行。现在,我们将为值部分创建一个变量。之后,我们将查看一个更广泛的示例来演示如何使用 PyParsing 来更改和解析地址数据。

迹忆客 936

STM32H750VB与AD5292通讯,写入阻值后,AD5292 的阻值没有变化,如何解决?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1102

【OpenCV】第二十三章: 图像特征检测之SURF、FAST、BRIEF、OBR算法

4、由于在检测特征点时是需要对图像中所有的像素点进行检测,然而图像中的绝大多数点都不是特征点,如果对每个像素点都进行上述的检测过程,那显然是种浪费,所以FAST采用一种进行非特征点判别的方法:首先对候选点的周围90度的点(1,9,5,13)四个点进行测试,而且是先测试1和9,如果它们两个符合阈值要求再测试5和13。继SIFT和SURF后,大家在特征点检测的速度上又进行了很多的改进尝试,但速度的提升效果都不是非常明显,直到FAST算法诞生,特征点检测的速度才有了一个质的飞跃。无法计算描述符的特征点将被删除。

因为热爱所以坚持 2159

python解析sql语句_Python使用pyparsing解析SQL

I want to parse a complex SQL which has (inner join,outer join) and get the table names used in the SQL.I am able to get the table names if it is simple select but if the SQL has inner join ,left join...

weixin_39775896的博客 897

LangGraph教程8:LangGraph流式处理

流式处理可显著提升基于LLM应用的响应性。LangGraph支持两种流式模式:values模式返回每一步的完整结果,适合需要完整上下文处理的场景;updates模式仅返回增量变化,适用于实时更新需求。示例代码展示了如何用create_react_agent实现这两种模式,其中values模式完整记录处理流程,updates模式逐步输出结果。通过异步迭代输出流,开发者可以灵活选择适合应用场景的流式处理方式。

Cachel Wood的博客 623

python解析html xml选用模块_在python中用XML解析html页面

使用pyparsing可以很容易地完成一些HTML抓取,使用该库的makeHTMLTags方法(makeHTMLTags返回一对表达式,用于开始和结束标记,但是在您的示例中,只需要开始标记):from pyparsing import makeHTMLTagsfcTag = makeHTMLTags("fc")[0]tagAttrs = 'dt s tx tn'.split()for match ...

weixin_40002336的博客 206

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

PyParsing的源代码

PyParsing是一个用于解析文本的Python库。它使用声明性语法来描述要解析的文本格式,并提供了许多方便的功能来处理解析结果。 您可以在GitHub上找到PyParsing的源代码:https://github.com/pyparsing/pyparsing 要获取PyParsing的源代码,您可以使用Git命令克隆存储库: git clone https://github.com/pypa...

weixin_35753431的博客 100

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

python解析sql语句,Python使用pyparsing解析SQL

I want to parse a complex SQL which has (inner join,outer join) and get the table names used in the SQL.I am able to get the table names if it is simple select but if the SQL has inner join ,left join...

weixin_32112607的博客 558

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Python文本解析实战:从字符串处理到结构化信息提取

字符串处理是编程中的基础技能,其核心原理在于通过模式匹配和分割操作,将非结构化文本转化为计算机可理解的结构化数据。正则表达式作为文本解析的瑞士军刀,通过定义特定模式,能够高效地定位和提取关键信息,在数据处理和自动化流程中具有重要技术价值。这一技术广泛应用于日志分析、数据清洗、内容审核和电商系统等场景,例如从用户生成内容中提取商品规格、情感倾向或用户标签。本文以Python为例,结合面向对象设计,详细演示了如何构建健壮的解析器来处理“125-160斤试穿”这类混杂文本,并融入正则表达式和分而治之策略,实现从杂

weixin_34343000的博客 423

pyparsing 如何为捕获组指定名称

来为捕获的换行符(或其他文本)指定名称。为了命名捕获的换行符,您可以将。如果希望将换行符与其他内容一起捕获并命名,您可以使用。被用来捕获换行符并返回一个字典,其中换行符被命名为。结合使用,这样可以为捕获的换行符指定一个名称。如果您需要处理捕获的换行符并为其命名,可以使用。选择最合适的方法可以根据具体的解析需求!来将多个解析结果组合成一个命名的组。下面是如何命名捕获的换行符的示例。被用来捕获整个解析结果,其中。来处理该内容并将其命名。捕获的换行符被命名为。

Debug yourself! 618

Python 学习 ---> 模块、pypi ( 模块库 )、添加模块路径

什么是 模块 在 Python 中,一个.py文件就是一个模块(Module)。模块的名字就是文件的名字。在模块内部,通过全局变量__name__可以获取模块名(即字符串) 模块作用 为了实现代码的复用,通常会把一些其他程序中重用的代码拿出来单独放在一个程序文件中,

freeking101的博客 3487

matplot pyparsing __version__

将原始的site-packages\pyparsing_init_.py文件进行更正 class version_info(NamedTuple): major: int minor: int micro: int releaselevel: str serial: int @property def __version__(self): return "{}.{}.{}".format(self.major, self.minor

m0_37400316的博客 221

告别走马观碑:高效文本处理实战,从grep到Python脚本

在数据处理和系统运维中,文本处理是一项基础且高频的需求,其核心在于对海量非结构化信息进行快速过滤与精准提取。正则表达式是实现模式匹配的关键技术,它通过定义字符序列的搜索模式,为自动化文本分析提供了强大支持。掌握正则表达式与流式处理技术,能极大提升日志分析、数据清洗和系统监控的效率,是工程师处理日常任务的必备技能。本文聚焦于日志分析这一典型应用场景,通过结合grep、awk等命令行工具与Python脚本,详细演示了如何从快速浏览到深度解析,构建一套完整的文本处理工作流,帮助开发者高效应对海量日志文件,避免关键

359
上一篇: Python中堆排序算法的实现
下一篇: Python中的超级参数,你知道吗?
Python热爱者
博客等级 码龄7年 3059粉丝 1330原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值