luofeiyu_cu 发表于 2014-04-01 17:10

如何抽取这个数字?

mystr1="该股自上市以来累计分红 11 次,累计分红金额为 24.18 亿元。"

mystr2="该股自上市以来累计分红 0 次"

要求:从mystr1 中抽取出24.18亿元,从mystr2中获得0亿元。

q1208c 发表于 2014-04-02 08:28

我kao, 这么有钱呀. 求带!! :em02::em02:

weishuo1999 发表于 2014-04-02 08:53

写个正则,提取里面的数字呗

xmchenb 发表于 2014-04-02 10:49

#-*- coding:utf8 -*-

import re

str1 = r"该股自上市以来累计分红 11 次,累计分红金额为 24.18 亿元"
str2 = r"该股自上市以来累计分红 0 次"

str3 = re.findall(r'(\d+.\d+)', str1)
str4 = re.findall(r'(\d+)', str2)

for i in str3:
    print i

pitonas 发表于 2014-04-02 14:44

写个正则,从中抽取出24.18亿元了:mrgreen:
超牛逼的:mrgreen:

回复 4# xmchenb


   

weishuo1999 发表于 2014-04-02 14:50

细看这个正则还是很多问题的,第一个万一人家不是小数呢? 第二个万一人家是小数呢?
[\d]+\.?[\d]+

liaozd 发表于 2014-04-02 15:35

本帖最后由 liaozd 于 2014-04-02 15:36 编辑

他要的是“亿元”,难点是编码mystr1=r"该股自上市以来累计分红 11 次,累计分红金额为 24.21 亿元。"
# coding=utf-8
reMoney = re.compile('\d+.?\d+\s*亿元')
Money = reMoney.findall(mystr1)
number = re.findall(r'\d+.?\d+', Money)
print number

['24.21']
需要的是第一行规定中文的编码方式
页: [1]
查看完整版本: 如何抽取这个数字?