gpt4 book ai didi

python - 提取数值数据 Python

转载 作者:太空狗 更新时间:2023-10-30 00:03:17 26 4
gpt4 key购买 nike

如果我只有几行内容:

1,000 barrels
5 Megawatts hours (MWh)
80 Megawatt hours (MWh) (5 MW per peak hour).

捕获数字元素(即第一个实例)和第一个括号(如果存在)的最佳方法是什么。

我目前的方法是为每个 ' ' 使用拆分字符串。和 str.isalpha 查找非 alpha 元素。但是,不确定如何获得括号中的第一个条目。

最佳答案

这是一种使用正则表达式的方法:

import re

text = """1,000 barrels
5 Megawatts hours (MWh)
80 Megawatt hours (MWh) (...)"""

r_unit = re.compile("\((\w+)\)")
r_value = re.compile("([\d,]+)")

for line in text.splitlines():
unit = r_unit.search(line)
if unit:
unit = unit.groups()[0]
else:
unit = ""
value = r_value.search(line)
if value:
value = value.groups()[0]
else:
value = ""
print value, unit

或者另一种更简单的方法是使用这样的正则表达式:

r = re.compile("(([\d,]+).*\(?(\w+)?\)?)")
for line, value, unit in r.findall(text):
print value, unit

(我刚写完上一个就想到了那个:-p)

最后一个正则表达式的完整解释:

(      <- LINE GROUP
( <- VALUE GROUP
[ <- character grouping (i.e. read char is one of the following characters)
\d <- any digit
, <- a comma
]
+ <- one or more of the previous expression
)
. <- any character
* <- zero or more of the previous expression
\( <- a real parenthesis
? <- zero or one of the previous expression
( <- UNIT GROUP
[
\w <- any alphabetic/in-word character
+ <- one or more of the previous expression
]
)
? <- zero or one of the previous expression
\) <- a real ending parenthesis
? <- zero or one of the previous expression
)
)

关于python - 提取数值数据 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16965005/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com