Python findall()起始数字和结束字

2024-04-29 16:23:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这根绳子

procesor = "2x2.73 GHz Mongoose M5 & 2x2.50 GHz Cortex-A76 & 4x2.0 GHz Cortex-A55"

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

Out:['2x2.73 GHz', '2x2.50 GHz', '4x2.0 GHz']

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

re.findall('(\d+[A-Za-z])',procesor)
Out[1]: ['2x', '2x', '4x']

Tags: re核心列表cortexcpuoutm5mongoose
3条回答

在更易于阅读的格式中[0-9]表示一位数字:

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)

返回:

['2x2.73 GHz', '2x2.50 GHz', '4x2.0 GHz']

使用

re.findall(r'\d+x\d+(?:\.\d+)?\s*GHz', procesor)

regex proof

解释

                                        
  \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'

如果需要,不区分大小写:

re.findall(r'\d+x\d+(?:\.\d+)?\s*GHz', procesor, re.I)

这个正则表达式模式可以帮助您:([\d.]+)\s?[xX]\s?([\d.]+)\s?GHz或insitive case(?i)([\d.]+)\s?x\s?([\d.]+)\s?GHz

请参见regex101中的示例

将其附加到Python源代码:

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)

输出

[('2', '2.73'), ('2', '2.50'), ('4', '2.0')]

解释

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

  • 第一组([\d.]+)匹配第一个实数
  • \s?[xX]\s?匹配 xx x XX X
  • 第二组([\d.]+)匹配第二个实数
  • \s?是可选的,匹配whitespace character或不匹配
  • GHz匹配字面上的单词GHz

相关问题 更多 >