Python 正则表达式与 re.findall 一起使用时返回匹配的一部分

2024-05-04

我一直在尝试自学 Python,目前正在学习正则表达式。我一直使用的教学文本似乎旨在教授 Perl 或其他非 Python 语言,因此我必须对表达式进行一些调整以适应 Python。然而,我经验不足,并且在尝试让表达式发挥作用时遇到了障碍。

该问题涉及在文本中搜索价格实例,表示为不带小数的 $500,或带小数的 $500.10。

文中是这样推荐的:

\$[0-9]+(\.[0-9][0-9])?

复制文本,我使用以下代码:

import re

inputstring = "$500.01"

result = re.findall( r'\$[0-9]+(\.[0-9][0-9])?', inputstring)

if result:
    print(result)
else:
    print("No match.")

然而,结果不是 500.01 美元,而是:

.01

我觉得这很奇怪。如果我删除括号和可选的小数部分,它就可以正常工作。所以,使用这个:

\$[0-9]+\.[0-9][0-9]

I get:

$500.01

如何让正则表达式返回带小数部分和不带小数部分的值?

Thanks.


使用非捕获组:

result = re.findall( r'\$[0-9]+(?:\.[0-9][0-9])?', inputstring)
                                ^^ 

The re.findall https://docs.python.org/2/library/re.html#re.findall函数返回捕获文本的列表(如果模式中定义了任何文本),并且您的文本中也有一个。您需要通过将其转变为非捕获性来摆脱它。

re.findall(模式、字符串、标志=0)
如果模式中存在一个或多个组,则返回组列表;如果模式有多个组,这将是一个元组列表。

Update

您可以使用以下命令稍微缩短您的正则表达式限制量词 {2}这需要前面的子模式恰好出现 2 次:

r'\$[0-9]+(?:\.[0-9]{2})?'
                    ^^^

或者甚至更换[0-9] with \d:

r'\$\d+(?:\.\d{2})?'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 正则表达式与 re.findall 一起使用时返回匹配的一部分 的相关文章

  • 安装了 32 位的 Python,显示为 64 位

    我需要运行 32 位版本的 Python 我认为这就是我在我的机器上运行的 因为这是我下载的安装程序 当我重新运行安装程序时 它会将当前安装的 Python 版本称为 Python 3 5 32 位 然而当我跑步时platform arch
  • 用枢轴点拟合曲线 Python

    我有下面的图 我想用 2 条线来拟合它 使用 python 我设法适应上半部分 def func x a b x np array x return a x b popt pcov curve fit func up x up y 我想用另
  • netsh 结果到 PowerShell 对象

    我正在尝试与NETSH https ss64 com nt netsh html来自 PowerShell 我想看到这个命令的结果 例如一个对象 但是netsh返回一个字符串 netsh wlan show hostednetwork Ge
  • 跟踪 pypi 依赖项 - 谁在使用我的包

    无论如何 是否可以通过 pip 或 PyPi 来识别哪些项目 在 Pypi 上发布 可能正在使用我的包 也在 PyPi 上发布 我想确定每个包的用户群以及可能尝试积极与他们互动 预先感谢您的任何答案 即使我想做的事情是不可能的 这实际上是不
  • 删除flask中的一对一关系

    我目前正在使用 Flask 开发一个应用程序 并且在删除一对一关系中的项目时遇到了一个大问题 我的模型中有以下结构 class User db Model tablename user user id db Column db String
  • 将 python2.7 与 Emacs 24.3 和 python-mode.el 一起使用

    我是 Emacs 新手 我正在尝试设置我的 python 环境 到目前为止 我已经了解到在 python 缓冲区中使用 python mode el C c C c将当前缓冲区的内容加载到交互式 python shell 中 显然使用了什么
  • 使用Python请求登录Google帐户

    在多个登录页面上 需要谷歌登录才能继续 我想用requestspython 中的库以便让我自己登录 通常这很容易使用requests库 但是我无法让它工作 我不确定这是否是由于 Google 做出的一些限制 也许我需要使用他们的 API 或
  • 如何将张量流模型部署到azure ml工作台

    我在用Azure ML Workbench执行二元分类 到目前为止 一切正常 我有很好的准确性 我想将模型部署为用于推理的 Web 服务 我真的不知道从哪里开始 azure 提供了这个doc https learn microsoft co
  • 创建正则表达式匹配数组

    在Java中 我试图将所有正则表达式匹配返回到一个数组 但似乎您只能检查模式是否匹配某些内容 布尔值 如何使用正则表达式匹配来形成与给定字符串中的正则表达式匹配的所有字符串的数组 4城堡的回答 https stackoverflow com
  • 如何使用 Mysql Python 连接器检索二进制数据?

    如果我在 MySQL 中创建一个包含二进制数据的简单表 CREATE TABLE foo bar binary 4 INSERT INTO foo bar VALUES UNHEX de12 然后尝试使用 MySQL Connector P
  • 如何使用python在一个文件中写入多行

    如果我知道要写多少行 我就知道如何将多行写入一个文件 但是 当我想写多行时 问题就出现了 但是 我不知道它们会是多少 我正在开发一个应用程序 它从网站上抓取并将结果的链接存储在文本文件中 但是 我们不知道它会回复多少行 我的代码现在如下 r
  • 在 Sphinx 文档中*仅*显示文档字符串?

    Sphinx有一个功能叫做automethod从方法的文档字符串中提取文档并将其嵌入到文档中 但它不仅嵌入了文档字符串 还嵌入了方法签名 名称 参数 我如何嵌入only文档字符串 不包括方法签名 ref http www sphinx do
  • Python3 在 DirectX 游戏中移动鼠标

    我正在尝试构建一个在 DirectX 游戏中执行一些操作的脚本 除了移动鼠标之外 我一切都正常 是否有任何可用的模块可以移动鼠标 适用于 Windows python 3 Thanks I used pynput https pypi or
  • 如何在 Windows 命令行中使用参数运行 Python 脚本

    这是我的蟒蛇hello py script def hello a b print hello and that s your sum sum a b print sum import sys if name main hello sys
  • Pandas 将多行列数据帧转换为单行多列数据帧

    我的数据框如下 code df Car measurements Before After amb temp 30 268212 26 627491 engine temp 41 812730 39 254255 engine eff 15
  • 根据列 value_counts 过滤数据框(pandas)

    我是第一次尝试熊猫 我有一个包含两列的数据框 user id and string 每个 user id 可能有多个字符串 因此会多次出现在数据帧中 我想从中导出另一个数据框 一个只有那些user ids列出至少有 2 个或更多string
  • 如何在 pygtk 中创建新信号

    我创建了一个 python 对象 但我想在它上面发送信号 我让它继承自 gobject GObject 但似乎没有任何方法可以在我的对象上创建新信号 您还可以在类定义中定义信号 class MyGObjectClass gobject GO
  • 在本地网络上运行 Bokeh 服务器

    我有一个简单的 Bokeh 应用程序 名为app py如下 contents of app py from bokeh client import push session from bokeh embed import server do
  • Django-tables2 列总计

    我正在尝试使用此总结列中的所有值文档 https github com bradleyayers django tables2 blob master docs pages column headers and footers rst 但页
  • 在 JavaScript 函数的 Django 模板中转义字符串参数

    我有一个 JavaScript 函数 它返回一组对象 return Func id name 例如 我在传递包含引号的字符串时遇到问题 Dr Seuss ABC BOOk 是无效语法 I tried name safe 但无济于事 有什么解

随机推荐

  • 如何更改 max_allowed_pa​​cket 大小

    我的 MySQL 数据库中的 BLOB 字段出现问题 上传大于约 1MB 的文件时出现错误Packets larger than max allowed packet are not allowed 这是我尝试过的 在 MySQL 查询浏览
  • 永远不应该触发嵌套优化。这可能是由于 NSISVariable 委托回调内部发生自动布局工作

    应用程序崩溃了 日志给了我这条消息 永远不应该触发嵌套优化 这可能是由于自动布局工作发生在 NSISVariable 委托回调内 这是不允许的 如何解决这个问题 认为我正在后台线程中更新 UI 尝试放置 if NSThread isMain
  • 带有自定义按钮的 ExtJs 消息框

    如何使用自定义按钮显示 ExtJS 消息框 我想要一个带有自定义消息以及 取消 和 停用 按钮的消息框 请给一些想法 buttons text Cancel handler function Ext MessageBox hide subm
  • 创建应用程序:无法初始化 ORM

    当我启动节点时 我总是收到此错误 请回复我我哪里出错了 错误 创建应用程序 无法初始化 ORM initializeORM NewORM 无法初始化 DB 无法打开 application name Chainlink 0 10 7 7C
  • 比较 Swift 中的 AnyObjects,无需将它们转换为特定类型

    尝试使用 Equatable 协议中定义的 运算符来比较 AnyObject 类型的两个对象会导致 Swift 中出现编译错误 有没有人找到一种方法来比较这些对象 而不知道可用于向下转换的对象的真实类型 这个问题的背景是我有一个字典 Dic
  • Cordova 插件不适用于 Ionic

    我正在 Angular 中构建一个 Ionic 应用程序 但一直无法让插件工作 例如 我尝试使用状态栏插件 如下所述 http ionicframework com tutorials fullscreen apps http ionicf
  • Excel - 使用 FILTERXML 从字符串中提取子字符串

    Background 最近 我一直在尝试更熟悉将分隔字符串更改为 XML 以使用 Excel 进行解析的概念FILTERXML https support microsoft com en us office filterxml funct
  • 节点获取映射错误 - 无法读取未定义的属性“映射””

    当我尝试运行 地图 部分时出现错误无法读取未定义的属性 地图 The customersconst 已在上面声明 所以不确定 未定义是从哪里来的 地图需要声明吗 const AWS require aws sdk ses new AWS S
  • Google App Engine 不解析 JSF 2.0 标签

    我在 AppEngine 上运行 JSF 2 0 时遇到问题 我有以下index xhtml如果我部署它并打开页面 除了Title并且该页面的源代码与编写时完全相同 没有任何更改
  • STL 映射值构造函数

    我有一个类 X 我想将其放入 std map 类型的 STL 映射中 STL 映射需要将 X 存储在内存中的某个位置 因此我正在寻找一种有效的 运行时和内存 方法来创建 X 并将其存储在映射中 我注意到以下代码 其中 x 是 X 类型的对象
  • isinstance 如何用于 List?

    我试图了解 Python 的类型注释是如何工作的 例如List and Dict not list or dict 具体来说 我感兴趣的是如何isinstance list List 有效 这样我就可以创建自己的自定义注释 我看到List定
  • php 时间戳 UTC

    我有一个 PHP MySQL 查询 它将一些数据插入 MySQL 数据库 并且包含时间戳 目前INSERT查询用途NOW 对于时间戳列 它以以下格式保存在数据库中 2012 07 24 13 13 02 不幸的是 对我来说 服务器不在我的时
  • 如何将主页包含在 Sphinx 目录中?

    假设我有一个 Sphinx 项目 其来源如下 index rst installation rst templating index rst module rst fieldtype rst index rst 主页 具有以下目录树 toc
  • Mongoid 3 - 检查复合键的唯一性

    我切换到 Mongoid 3 这使得一些事情有所不同 目前我尝试检查复合字段是否唯一 class Host include Mongoid Document field ip type gt String field port type g
  • 如何让 CSS3 渐变跨越整个页面的高度,而不仅仅是视口?

    我有一个跨浏览器的 CSS 渐变 如下所示 background background 1E5799 old browsers background moz linear gradient top 002c5a 0 79d6f4 100 f
  • 在Python中通过引用传递引用

    python 中是否可以通过引用传递引用 在C 中 可以通过向数据传递指针来模仿Python传递数据的模型 指针按值传递 函数可以更改它指向的任何内容 但函数不能更改指针的值 但是 在 C 中 您还可以传递对指针的引用 在这种情况下 您可以
  • 在 Ruby 中,如何生成一长串重复文本?

    在 ruby 中快速生成长字符串的最佳方法是什么 这有效 但速度非常慢 str length 100000 1 length each i str 0 我还注意到 创建一个适当长度的字符串 然后将其附加到现有字符串直至所需的长度 速度会更快
  • pygame.display.set_mode() 到底做了什么?

    我最近开始使用 pygame python 库 我只是想看看我是否理解正确 以下是设置窗口的一些代码 在这行中说 windowSurface pygame display set mode WINDOWWIDTH WINDOWHEIGHT
  • 仅给出后序构造完整二叉树?

    我正在尝试构建一个完整的二叉树 完整的意思是每个非叶节点都有两个叶节点连接到它 即node gt right and node gt left are NULL 仅给出树的后序遍历 另外 我还知道后序遍历中的节点是否是叶节点 给定的后序遍历
  • Python 正则表达式与 re.findall 一起使用时返回匹配的一部分

    我一直在尝试自学 Python 目前正在学习正则表达式 我一直使用的教学文本似乎旨在教授 Perl 或其他非 Python 语言 因此我必须对表达式进行一些调整以适应 Python 然而 我经验不足 并且在尝试让表达式发挥作用时遇到了障碍