有句“我有5公斤苹果和6公斤梨”。
我只想提取苹果的重量。
所以我用
sentence = "I have 5 kg apples and 6 kg pears"
number = re.findall(r'(\d+) kg apples', sentence)
print (number)
但是,它只适用于整数。那么,如果要提取的数字是5.5,我该怎么办?
答案 0 :(得分:1)
你需要的正则表达式应该是这样的:
(\d+.?\d*) kg apples
您可以执行以下操作:
number = re.findall(r'(\d+.?\d*) kg apples', sentence)
Here是一个在线示例
答案 1 :(得分:0)
?
指定正则表达式的可选段。
re.findall(r'((\d+\.)?\d+)', sentence)
答案 2 :(得分:0)
您可以使用number = re.findall(r'(\d+\.?\d*) kg apples', sentence)
答案 3 :(得分:0)
您更改正则表达式以匹配它:
(\d+(?:\.\d+)?)
\.\d+
匹配一个点,后跟至少一位数。我把它作为可选项,因为你仍然想要一个数字。
答案 4 :(得分:0)
您可以尝试这样的事情:
import re
sentence = ["I have 5.5 kg apples and 6 kg pears",
"I have 5 kg apples and 6 kg pears"]
for sen in sentence:
print re.findall(r'(\d+(?:\.\d+)?) kg apples', sen)
输出:
['5.5']
['5']
答案 5 :(得分:0)
re.findall(r'[-+]?[0-9]*\.?[0-9]+.', sentence)
答案 6 :(得分:0)
非正则表达式解决方案
sentence = "I have 5.5 kg apples and 6 kg pears"
words = sentence.split(" ")
[words[idx-1] for idx, word in enumerate(words) if word == "kg"]
# => ['5.5', '6']
然后,您可以使用
检查这些是否是有效的浮动try:
float(element)
except ValueError:
print "Not a float"