我可以只从字符串中的每一行中提取整数并将它们保存在列表中吗?

Can I extract only integers from each line in a string and save them in a list?

我有一个包含 3 行的字符串,如下所示。

@ 544 000
* 600 000
‘7000...

我想将这些数字作为整数提取到列表中。

Numbers = [544000, 600000, 7000]

我试过像这样使用 for 循环拆分数据。

numbers = []    
for word in data.split():
    if word.isdigit():
        numbers.append(int(word))
print(numbers)

但结果是

[544, 0, 600, 0]

我走在正确的轨道上吗,还是我需要以其他方式拆分它?

您可以使用 str.isdigit() + str.join()(从行中提取每个字符并用 str.isdigit() 进行检查。之后用 str.join() 连接每个数字):

s = """@ 544 000
* 600 000
‘7000..."""

for line in s.splitlines():
    print("".join(ch for ch in line if ch.isdigit()))

打印:

544000
600000
7000

或作为列表:

numbers = [
    int("".join(ch for ch in line if ch.isdigit())) for line in s.splitlines()
]

编辑:添加了对不包含数字的行的检查:

numbers = [
    int(m)
    for line in s.splitlines()
    if (m := "".join(ch for ch in line if ch.isdigit())).isnumeric()
]

与带有正则表达式的@AndrejKesely 相同:

import re

numbers = [int(''.join(re.findall(r'(\d+)', line))) for line in text.splitlines()]

输出:

>>> numbers
[544000, 600000, 7000]