我正在尝试从以下字符串接收价格:
“€29,95 ipv€69,95–ezCast M2原件”
使用以下正则表达式:
[\$\£\€](\d+(?:.\d{1,2})?)
根据regex测试人员,上面的regex工作正常(我收到29,95和69,95没有货币,所以这是好的)。。。但在python中不是这样的,我认为这是因为python使用了unicodes字符串。因为如果我在屏幕上打印字符串,我会得到:
[u'\u20ac29,95 ipv \u20ac69,95 \u2013 ezCast M2 Original']
我尝试了以下代码:
p = re.findall('[\$\£\€](\d+(?:.\d{1,2})?)',str(prices))
p = re.findall(u'[\$\£\€](\d+(?:.\d{1,2})?)',str(prices))
p = re.findall(ur'[\$\£\€](\d+(?:.\d{1,2})?)',str(prices))
p = re.findall(r'[\$\£\€](\d+(?:.\d{1,2})?)',str(prices))
这些都不管用。。。 但下面的方法确实有效:
p = re.compile('(\d+(?:.\d{1,2})?)')
#
for m in p.findall(str(prices)):
print m
但是我收到了所有的数字,我只想要一种货币后面的数字。你知道吗
有人能帮我吗?你知道吗
通过解码将字符串转换为unicode。你知道吗
您可以使用以下正则表达式:
它忽略了符号并依赖于“ipv”分隔符。 必须获得\1和\2元素
您需要
encode
字符串:相关问题 更多 >
编程相关推荐