编写函数以使用正则表达式从字符串中提取整数

2024-05-03 08:57:49 发布

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

尝试将函数整数\u写入\u括号中,从给定字符串中查找括在括号中的所有整数。你知道吗

运行示例:integers_in_brackets(" afd [asd] [12 ] [a34] [ -43 ]tt [+12]xxx")返回[12, -43, 12]。所以数字和方括号之间可以有空格,但除了构成整数的字符外,没有其他字符。你知道吗

我目前的进展是:

def integers_in_brackets(s):
    r= []
    patt = re.compile(r'\W\s*(-?\d+)')
    for i in patt.findall(s):
        r.append(int(i))
    return r

但我似乎在TMC考试中失败了,我只达到了66%的要求

Failed: test.test_integers_in_brackets.IntegersInBrackets.test_second
        Lists differ: [128, 47, -43, 12] != [47, 12]

First differing element 0:
128
47

First list contains 2 additional elements.
First extra element 2:
-43

- [128, 47, -43, 12]
+ [47, 12] : Incorrect result for string   afd [128+] [47 ] [a34]  [ +-43 ]tt [+12]xxx!

Test results: 2/3 tests passed
 66%[????????????????????????????????????????????????????????????????]

Tags: integersintestfor整数element字符括号
2条回答

明确的括号应该起作用:

def integers_in_brackets(s):
    r= []
    patt = re.compile(r'\[\s*(\+?-?\d+)\s*\]')
    for i in patt.findall(s):
        r.append(int(i))
    return r

这应该起作用:

import re
pat=r"(?:\[(\s*?[-+]?\d+\s*?)\])"
list(map(eval, re.findall(pat, "  afd [asd] [12 ] [a34]  [ -43 ]tt [+12]")))                                                                                                        
#[12, -43, 12]

相关问题 更多 >