Regex 在Python中选择特定的数字

Regex 在Python中选择特定的数字,regex,python-2.7,Regex,Python 2.7,我想捕获括号中提到的25.43,如下所示。我不知道怎么做。我试着对它进行切片,但它没有给出所需的输出 请注意,此数字是动态的,并且会经常更改。我只对括号中的数字感兴趣 a = [u'\xa0\xa0119\xa0\xa0(25.43)%\xa0\xa0'] 是的,字符串的结构总是相同的,除了我用粗体标记的数字 然后可以使用下面的正则表达式 >>> import re >>> a = [u'\xa0\xa0119\xa0\xa0(25.43)%\xa0\xa0

我想捕获括号中提到的25.43,如下所示。我不知道怎么做。我试着对它进行切片,但它没有给出所需的输出

请注意,此数字是动态的,并且会经常更改。我只对括号中的数字感兴趣

a = [u'\xa0\xa0119\xa0\xa0(25.43)%\xa0\xa0']
是的,字符串的结构总是相同的,除了我用粗体标记的数字

然后可以使用下面的正则表达式

>>> import re
>>> a = [u'\xa0\xa0119\xa0\xa0(25.43)%\xa0\xa0']
>>> re.search(r'\((\d+\.\d+)\)', a[0]).group(1)
u'25.43'
这将在字符串中括号之间找到第一个浮点数


请注意,您的
a
是一个包含字符串的
列表,而不是字符串。

我会这样做:

a = u'\xa0\xa0119\xa0\xa0(25.43)%\xa0\xa0'
print re.findall('\\xa0\\xa0119\\xa0\\xa0\(' + "(\d+\.\d+)" + '\)%\\xa0\\xa0', a)

在这里,我使用
(\d+\.\d+
)实际捕获了您提到的动态部分<代码>\d+
表示一个或多个数字。使用括号,我实际上捕获了regex组中的十进制数。

您可以尝试以下方法:

>>>b = a[0].encode('ascii','ignore')
>>>b
'119(25.43)%'
>>>b.split('(',1)[1].split(')')[0]
'25.43'

我会首先找到括号,然后检查里面的字符串是否匹配浮点数类型

>>> a = '\xa0\xa0119\xa0\xa0(25.43)%\xa0\xa0'
>>> b = re.findall(r"(\d+\.\d+)",a)
>>> b
['25.43']

正如其他几个答案所显示的,正则表达式可以很好地工作。您也可以简单地使用
find()
方法和切片:

In [9]: s
Out[9]: u'\xa0\xa0119\xa0\xa0(25.43)%\xa0\xa0'

In [10]: s[s.find('(')+1:s.find(')')]
Out[10]: u'25.43'

你所说的选择是什么意思?字符串的结构是否始终相同?@timgeb,不是select,但我希望在字符串中捕获此值。是的,字符串的结构总是相同的,除了我用粗体标记的数字。是的@timgeb,Warren Weckesser回答帮助了我。你的解决方案奏效了。谢谢你的支持。