Python正则表达式可从Unicode中检索数字,点和破折号

时间:2018-11-07 17:11:24

标签: python regex python-2.7

我有以下数据:u'US $1.37 - 2.65'

我想检索1.37-2.65

重要US $部分不是静态的,它可能会根据所选货币的类型而变化。其他示例:

34.27 - 47.92 грн.
€ 1.05 - 1.47
NZ$ 16.57 - 18.22

换句话说,正则表达式只能检索:

  • 数字
  • 数字之间的点
  • 数字之间的破折号

3 个答案:

答案 0 :(得分:1)

您可以仅分割“ $”字符并使用第二个列表项:

>>> u'US $1.37 - 2.65'.split("$")[1]
u'1.37-2.65

如果出于某种原因需要使用正则表达式,则应使用以下命令:

>>> import re
>>> re.findall('^.* \$([0-9 -.]+)$', 'US $1.37 - 2.65')[0].replace(' ', '')
'1.37-2.65'

最终编辑:以下模式将匹配添加到原始帖子中的所有示例:

>>> re.findall('^(.* [^0-9]?)?([0-9.,]+ - [0-9.,]+)( .*)?$', data)[0][1].replace(' ', '')

答案 1 :(得分:0)

好吧,找到了适用于所有货币的商品。

"".join(re.findall('[0-9.-]',text)).rstrip(".")

text与以下任何一种配合使用:

34.27 - 47.92 грн.
€ 1.05 - 1.47
NZ$ 16.57 - 18.22

答案 2 :(得分:-2)

newmap <- getMap(resolution = "high")
plot(newmap)
ggmap(newmap) +
  geom_point(data = pts, aes(x = longitude, y = latitude, size=n), 
             shape=21, fill = "steelblue", color = "white", stroke=0.25)

aa = 'US $1.37 - 2.65'
string = ""
flag = 0
for i in range(len(aa)):
    if flag ==1:
        string += aa[i]
    if aa[i] == '$':
        flag=1

print(string)