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



我有一个包含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()
]

EDIT:添加了不包含数字的行检查:

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

与@AndrejKesely相同,带有regex:

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

输出:

>>> numbers
[544000, 600000, 7000]

相关内容

  • 没有找到相关文章

最新更新