【问题标题】:Extract float numbers from string in python [duplicate]从python中的字符串中提取浮点数[重复]
【发布时间】:2019-01-06 00:29:11
【问题描述】:

我想从以下字符串中提取数字

FRESENIUS44.42 BAYER64.90 FRESENIUS MEDICAL CARE59.12 COVESTRO45.34 BASF63.19

我尝试了以下方法,但没有奏效:

l = []

for t in xs.split():

try:
    l.append(float(t))
except ValueError:
    pass

结果应该是 44.42 64.90 59.12 45.34 63.19

谢谢!

【问题讨论】:

  • @GermanLashevich 不是骗子(至少不是那个问题)。 OP 中的数字没有与非数字字符串分开,所以 split 不起作用。
  • @DYZ 我链接的答案正是 OP 需要的。

标签: python


【解决方案1】:
import re

list = ["FRESENIUS44.42", "BAYER64.90" "FRESENIUS MEDICAL CARE59.12", "COVESTRO45.34", "BASF63.19",]

newList = [float(re.findall("\d+\.\d+", i)[0]) for i in list]
print(newList)

首先,我们使用正则表达式提取浮点数,然后我们转换为浮点数并使用列表推导附加到列表。

【讨论】:

  • 非常感谢!它工作得很好!我也可以使用这个表达式来过滤字符串吗? => FRESENIUS BAYER ... ?
【解决方案2】:
import re
myStr = 'FRESENIUS44.42 BAYER64.90 FRESENIUS MEDICAL CARE59.12 COVESTRO45.34 BASF63.19'
outList = re.findall(r"[-+]?\d*\.\d+|\d+", myStr)
    ['44.42', '64.90', '59.12', '45.34', '63.19']
finalStr = ' '.join(outList)
    '44.42 64.90 59.12 45.34 63.19'

【讨论】:

    猜你喜欢
    • 2017-06-09
    • 2011-06-09
    • 2020-12-17
    • 1970-01-01
    • 2019-03-16
    • 2020-08-04
    • 2010-10-30
    相关资源
    最近更新 更多