在Python 3中查找字符串中的所有数字

Find all numbers in a string in Python 3

本问题已经有最佳答案,请猛点这里访问。

新来的,在网上搜索了好几个小时才找到答案。

1
string ="44-23+44*4522" # string could be longer

如何将其作为列表,因此输出为:

1
[44, 23, 44, 4522]


使用Achampion建议的正则表达式,可以执行以下操作。

1
2
3
string ="44-23+44*4522"
import re
result = re.findall(r'\d+',string)

r""表示原始文本,"d"表示十进制字符,"+"表示出现一次或多次。如果期望字符串中不希望分隔的浮点,则可以使用句点"."括起来。

1
re.findall(r'[\d\.]+',string)


这里你有你的化妆功能,解释和详细。既然你是个新手,这是一个非常简单的方法,所以很容易理解。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
def find_numbers(string):
    list = []
    actual =""
    # For each character of the string
    for i in range(len(string)):
        # If is number
        if"0" <= string[i] <="9":
            # Add number to actual list entry
            actual += string[i]
        # If not number and the list entry wasn't empty
        elif actual !="":
            list.append(actual);
            actual ="";
    # Check last entry
    if actual !="":
        list.append(actual);
    return list