首页 > 解决方案 > 从句子中解析数字

问题描述

我有一个看起来像这样的句子:

word word - word -word- $1.2 - $2,222 $5 '

我需要得到所有的数字,但是在这种情况下,一个和两个之间的破折号实际上被认为是一个数字。所以我想得到一个看起来像这样的数组: [ $1.2 | - | $2,222 | $5]

美元符号不是问题

我正在尝试这个:

(\s+-(?![a-zA-Z]*5)|[\$\d\.,]+\s

这个想法是我想要一个没有字母的破折号,或者一个数字复数(一堆数字、点和逗号),以及它周围的任何空格。

我目前得到这个:

 -  - $1.2  $2,222  $5

......我不想要的所有破折号和我想要的破折号。

标签: pythonregex

解决方案


我不确定如何在正则表达式中执行此操作,但我是这样做的(可能比正则表达式更简单):

myList = []
numbers = ["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "$", ".", ","]
myString = "word word - word -word- $1.2 - $2,222 $5 '"
for word in myString.split(" "):
    isNumber = True
    for letter in word:
        if letter not in numbers:
            isNumber = False
    if isNumber:
        myList.append(word)
print(myList)

我希望这会有所帮助,即使它不是您想要的。如果您需要解释,请发表评论,我很乐意解释。


推荐阅读