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