我可以只从字符串中的每一行中提取整数并将它们保存在列表中吗?
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]
我有一个包含 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]