如何根据 python 中句子的上下文提取数字?
How can I extract numbers based on context of the sentence in python?
我试过使用正则表达式,但在任何上下文中都不行
例子::
“出售 250 公斤橙子”
“我想以每公斤 100 的价格出售 100 公斤洋葱”
你可以这样做。
首先将文本拆分为单词,然后尝试将每个单词转换为数字。
如果这个词可以转换成数字,它就是一个数字,如果你确定一个数量后面总是跟着“kg”这个词,一旦你找到这个数字,你就可以测试下一个词是否是“kg”。
然后,根据结果,将值添加到相应的数组。
在这种特殊情况下,您必须确保数字是单独写的(例如“100 公斤”而不是“100 公斤”),否则它不会被转换。
string = "250 kg Oranges for Sale. I want to sell 100 kg of Onions at 100 per kg."
# Split the text
words_list = string.split(" ")
print(words_list)
# Find which words are numbers
quantity_array = []
price_array = []
for i in range(len(words_list)):
try:
number = int(words_list[i])
# Is it a price or a quantity?
if words_list[i + 1] == 'kg':
quantity_array.append(number)
else:
price_array.append(number)
except ValueError:
print("\'%s\' is not a number" % words_list[i])
# Get the results
print(quantity_array)
print(price_array)
我试过使用正则表达式,但在任何上下文中都不行
例子:: “出售 250 公斤橙子” “我想以每公斤 100 的价格出售 100 公斤洋葱”
你可以这样做。 首先将文本拆分为单词,然后尝试将每个单词转换为数字。 如果这个词可以转换成数字,它就是一个数字,如果你确定一个数量后面总是跟着“kg”这个词,一旦你找到这个数字,你就可以测试下一个词是否是“kg”。 然后,根据结果,将值添加到相应的数组。 在这种特殊情况下,您必须确保数字是单独写的(例如“100 公斤”而不是“100 公斤”),否则它不会被转换。
string = "250 kg Oranges for Sale. I want to sell 100 kg of Onions at 100 per kg."
# Split the text
words_list = string.split(" ")
print(words_list)
# Find which words are numbers
quantity_array = []
price_array = []
for i in range(len(words_list)):
try:
number = int(words_list[i])
# Is it a price or a quantity?
if words_list[i + 1] == 'kg':
quantity_array.append(number)
else:
price_array.append(number)
except ValueError:
print("\'%s\' is not a number" % words_list[i])
# Get the results
print(quantity_array)
print(price_array)