首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python findall()开始数字和结束单词

Python findall()开始数字和结束单词
EN

Stack Overflow用户
提问于 2020-11-22 05:51:21
回答 3查看 99关注 0票数 2

我有这个字符串

代码语言:javascript
复制
procesor = "2x2.73 GHz Mongoose M5 & 2x2.50 GHz Cortex-A76 & 4x2.0 GHz Cortex-A55"

通过使用re.findall(),我需要这个CPU核心列表。

代码语言:javascript
复制
Out:['2x2.73 GHz', '2x2.50 GHz', '4x2.0 GHz']

请帮帮我。我被困在这里了:

代码语言:javascript
复制
re.findall('(\d+[A-Za-z])',procesor)
Out[1]: ['2x', '2x', '4x']
EN

回答 3

Stack Overflow用户

发布于 2020-11-22 05:54:10

使用

代码语言:javascript
复制
re.findall(r'\d+x\d+(?:\.\d+)?\s*GHz', procesor)

参见regex proof

说明

代码语言:javascript
复制
--------------------------------------------------------------------------------
  \d+                      digits (0-9) (1 or more times (matching
                           the most amount possible))
--------------------------------------------------------------------------------
  x                        'x'
--------------------------------------------------------------------------------
  \d+                      digits (0-9) (1 or more times (matching
                           the most amount possible))
--------------------------------------------------------------------------------
  (?:                      group, but do not capture (optional
                           (matching the most amount possible)):
--------------------------------------------------------------------------------
    \.                       '.'
--------------------------------------------------------------------------------
    \d+                      digits (0-9) (1 or more times (matching
                             the most amount possible))
--------------------------------------------------------------------------------
  )?                       end of grouping
--------------------------------------------------------------------------------
  \s*                      whitespace (\n, \r, \t, \f, and " ") (0 or
                           more times (matching the most amount
                           possible))
--------------------------------------------------------------------------------
  GHz                      'GHz'

如果您需要它不区分大小写:

代码语言:javascript
复制
re.findall(r'\d+x\d+(?:\.\d+)?\s*GHz', procesor, re.I)
票数 2
EN

Stack Overflow用户

发布于 2020-11-22 07:13:21

在一种更便于人类阅读的格式中,[0-9]表示一个数字:

代码语言:javascript
复制
processor = "2x2.73 GHz Mongoose M5 & 2x2.50 GHz Cortex-A76 & 4x2.0 GHz Cortex-A55"
re.findall(r'[0-9]+x[0-9]+.[0-9]* GHz', processor)

返回:

代码语言:javascript
复制
['2x2.73 GHz', '2x2.50 GHz', '4x2.0 GHz']
票数 1
EN

Stack Overflow用户

发布于 2020-11-22 07:53:57

查看regex101中的示例!

将此代码附加到您的Python源代码中:

代码语言:javascript
复制
processor  = """2x2.73 GHz Mongoose M5 & 2x2.50 GHz Cortex-A76 & 4x2.0 GHz Cortex-A55"""
CPU_Cores = re.findall("([\d.]+)\s?[xX]\s?([\d.]+)\s?GHz", processor)
print (CPU_Cores)

输出

代码语言:javascript
复制
[('2', '2.73'), ('2', '2.50'), ('4', '2.0')]

解释

([\d.]+)\s?[xX]\s?([\d.]+)\s?GHz

第一组real-number.

  • \s?[xX]\s?匹配第一组X.

  • The匹配第一个real-number.

  • \s?([\d.]+)匹配xxxXX,第二组
  • 匹配第二个([\d.]+)是可选的,它匹配<x>D26或X.
  • The匹配字面上的real-number.
  • \s?
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64948467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档