在Python中从字符串中提取所需的数值

2024-04-26 07:56:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两条线:

['Renewables\n', '17.9% (3,951 MW)\n']
['Solar\n', '27.4% (1,081 MW)\n', 'LATEST SYSTEM\n', 'GENERATION\n', '4,738 MW\n', 'THERMAL GENERATION\n', '(COAL, GAS, OTHER)\n', '54 %\n', 'RENEWABLE\n', 'GENERATION\n', '47.61 %\n']

但我只想从每一个字符串中得到百分比的数值,例如17.9和47.61,我想把这些数字用在后续程序中,结果将取决于哪个数字更大,因为它们是一个网页抓取工具的结果。你知道吗

如何将这些值提取为浮点数,以便继续使用它们?你知道吗

编辑

我只想要每个字符串的最后一个百分比值,不需要任何MW值或以前的百分比值。你知道吗


Tags: 字符串数字latestsystemgenerationmw百分比other
2条回答

这是一个没有regex的解决方案,但是它非常适合您的情况。你知道吗

代码检查字符串中的百分比,如果找到则拆分并提取之前的数字。你知道吗

examples = ['Solar\n', '27.4% (1,081 MW)\n', 'LATEST SYSTEM\n', 'GENERATION\n', '4,738 MW\n', 'THERMAL GENERATION\n', '(COAL, GAS, OTHER)\n', '54 %\n', 'RENEWABLE\n', 'GENERATION\n', '47.61 %\n']
output = []

for each_string in examples:
    if "%" in each_string:
        number = each_string.split("%")[0].strip(" ")
        output.append(number)

#output = ['27.4', '54', '47.61']

您可以使用正则表达式:

import re
s = ['Renewables\n', '17.9% (3,951 MW)\n']
s1 = ['Solar\n', '27.4% (1,081 MW)\n', 'LATEST SYSTEM\n', 'GENERATION\n', '4,738 MW\n', 'THERMAL GENERATION\n', '(COAL, GAS, OTHER)\n', '54 %\n', 'RENEWABLE\n', 'GENERATION\n', '47.61 %\n']
final_results = [float(re.findall('\d+\.\d+(?=\%)|\d+\.\d+(?=\s\%)', i[-1])[0]) for i in [s, s1]]

输出:

[17.9, 47.61]

相关问题 更多 >