我需要在符号之后或字符串的开头提取所有字母,如下所示:

formula = "X+BC+DAF"

我试过了,我不想看到结果中的标志.我希望只看到[‘X’,’B’,’D’].

>>> re.findall("^[A-Z]|[+][A-Z]", formula)

['X', '+B', '+D']

当我用括号分组时,我得到了这个奇怪的结果:

re.findall("^([A-Z])|[+]([A-Z])", formula)

[('X', ''), ('', 'B'), ('', 'D')]

当我尝试分组时为什么会创建元组?如何直接编写正则表达式,使其返回[‘X’,’B’,’D’]?

解决方法:

如果正则表达式中有任何捕获组,则re.findall仅返回组捕获的值.如果没有组,则返回整个匹配的字符串.

re.findall(pattern, string, flags=0)

Return all non-overlapping matches of pattern in string, as a list of strings. The string is scanned left-to-right, and matches are returned in the order found. If one or more groups are present in the pattern, return a list of groups; this will be a list of tuples if the pattern has more than one group. Empty matches are included in the result unless they touch the beginning of another match.

How to write the regexp directly such that it returns [‘X’, ‘B’, ‘D’] ?

您可以使用非捕获组来代替使用捕获组:

>>> re.findall(r"(?:^|\+)([A-Z])", formula)

['X', 'B', 'D']

或者对于这种特定情况,您可以尝试使用单词边界的更简单的解决方案:

>>> re.findall(r"\b[A-Z]", formula)

['X', 'B', 'D']

或者使用不使用正则表达式的str.split的解决方案:

>>> [s[0] for s in formula.split('+')]

['X', 'B', 'D']

标签:python,regex

来源: https://codeday.me/bug/20190517/1123639.html

python中findall是什么意思_在Python中使用findall和括号相关推荐

  1. python跟易语言的爬虫_新人Python,第一只爬虫,,我就只会re.findall,你咬我?

    [Python] 纯文本查看 复制代码import requests import re import os # 设置浏览器引擎 headers ={ 'User-Agent': 'Mozilla/5 ...

  2. python修改散点图中点的颜色_更改散点图中不同虚拟值的点的颜色 - python

    在我的数据集中,我有一个Price列用于房价,还有5个虚拟列用于城市中的不同位置.我要做的是用不同的颜色在散点图上显示数据点. 例如,在一个包含所有房屋价格的散点图上,我想要: 当dummy1表示房屋 ...

  3. python怎么把变量付给数组_使用Python将数组的元素导出到变量中(unpacking)

    解决的问题 需要将数组(list)或元组(tuple)中的元素导出到N个变量中. 解决的方案 任何序列都可以通过简单的变量赋值方式将其元素分配到对应的变量中,唯一的要求就是变量的数量和结构需要和序列中 ...

  4. python中mod是什么意思_【python中,mod_python到底做了些什么呢?】mod python 教程

    python 编程小白 ,不会用doctest 请大神指教怎么用!! >>> >>> def is_between(v, lower, higher): ...   ...

  5. python中有这样一条语句_在Python中一行书写两条语句时,语句之间可以使用__________作为分隔符。_学小易找答案...

    [填空题]Python表达式4.5/2.4.5//2和4.5%2的值分别为__________________________. [填空题]我国古代文献中所记载的最早的学校类型有两种,分别是 和 . ...

  6. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  7. python搜索pdf内容所在页码_利用Python在pdf文档中寻找某些词出现的页码

    要研究pdf文件的页码,首先要考虑这个文件的种类.pdf可能是一本书的电子版,可能是一份简历.可能是由Word.PPT或其他文档导出的--如果不是一本书,通常页面内容里是没有页码的:如果是一本书,虽然 ...

  8. 数组中查找並返回数组_用Python查找数组中出现奇数次的那个数字

    有一个数组,其中的数都是以偶数次的形式出现,只有一个数出现的次数为奇数次,要求找出这个出现次数为奇数次的数. 集合+统计 解题思路 最简单能想到的,效率不高.利用集合的特性,通过 Python 的 s ...

  9. python一切皆对象的理解_在 Python 中万物皆对象

    在 Python 中一切都是对象,并且几乎一切都有属性和方法.所有的函数都有一个内置的 __doc__ 属性,它会返回在函数源代码中定义的 doc string:sys 模块是一个对象,它有一个叫作 ...

  10. python中的静态方法如何调用_关于Python中如何使用静态、类、抽象方法的权威指南(译)...

    对于Python中静态.类.抽象方法的使用,我是一直很迷糊的.最近看到一篇技术文章对这方面解释的很好,在此翻译一下,加深印象,也为有需要的同学提供一个方便. Python中方法是如何工作的: 方法即函 ...

最新文章

  1. 3.ELK 之elasticsearch CRUD
  2. winform c#绑定combobox下拉框 年度代码。
  3. 学校拥有计算机清单和所放位置说明,大学计算机基础期末考试指南(2011)
  4. 总结get和post区别
  5. Linux下C语言串口应用编程,Linux下串口C语言编程
  6. 检索 COM 类工厂中 CLSID 为 {000209FF-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005...
  7. mysql 存储过程 set into_mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作方法...
  8. 微服务网关总结之 —— zuul
  9. AndroidStudio新建项目报错build failed
  10. Castle ActiveRecord学习笔记四:各种映射
  11. 【android开发】手机应用管理器的实现之实现软件加锁(四)
  12. WIN10 修改用户下文件夹的名称
  13. RAID容量在线计算器
  14. openGauss数据库开发调试工具指导
  15. 用计算机打一闪一闪亮晶晶,一闪一闪亮晶晶 我去!RGB轴机械键盘灯光玩法亮瞎人...
  16. Markdown怎么加入emoji
  17. GRACE重力卫星水文应用基本概念之时变重力场
  18. lsdyna如何设置set中的node_list_如何理解vue的双向绑定
  19. [Unity] Catan Universe: Unity 的移动设备优化
  20. android模拟器拍照图,android模拟器无法使用camera拍照

热门文章

  1. LOADRUNNER中PACING的设置
  2. CAS 5.3自定义 登录
  3. c语言中的float类型,C语言中float类型详解
  4. Vim配置Golang开发环境
  5. 甘特图实时跟踪项目进度,提高项目管理效率
  6. Linux :ldconfig的使用介绍
  7. 错误: 找不到或无法加载主类 com.ssw.Springboot04Application
  8. Android xUtils框架解析
  9. java 截取list
  10. excel数据生成条码或者二维码并放在表格中(VBA)