gpt4 book ai didi

python - 正则表达式将数值解析为没有星号和空格的数组

转载 作者:太空宇宙 更新时间:2023-11-04 02:01:46 25 4
gpt4 key购买 nike

我有下面的示例数据,我想提取前两列数字并将它们放入一个数组中。

数据集:

      54     1%    2.11 MB  52 min       0.0    49.0    0.0  test1 test1_4.1.6_Win_x86_install_en-US.tar
55 17% 31.89 MB 1 min 0.0 1263.0 0.0 test344 base-2.10.6-x86_64.dmg
56 17% 31.18 MB 1 min 0.0 1267.0 0.0 test2 base-2.10.4-x86_64.dmg
57 15% 27.12 MB 2 min 0.0 1066.0 0.0 test23 base-2.10.6-setup.exe
58 20% 32.16 MB 1 min 0.0 1196.0 0.0 test232 base-2.10.8-x86_64-2.dmg
59* 0% None 599 days 0.0 0.0 0.0 test12 base.1.2_Linux_x86_deb.tar.gz
60 14% 26.31 MB 2 min 0.0 1243.0 0.0 test23 base-2.10.4-setup-2.exe
61 0% None Unknown 0.0 0.0 None Idle base-0.9.24.1.exe
Sum: 150.8 MB 0.0 6084.0

当前结果:

    54     1
55 17
56 17
57 15
58 20
60 14

期望的结果:

    54     1
55 17
56 17
57 15
58 20
59 0
60 14
61 0

问题:

缺少 id 59 和 0

虽然我已经得到它来捕获前两列。我似乎无法用星号捕获该列

我正在尝试了解如何改进正则表达式的“\s+”部分以包含数字并排除星号。

代码:

    import re

output4a = """
54 1% 2.11 MB 52 min 0.0 49.0 0.0 test1 test1_4.1.6_Win_x86_install_en-US.tar
55 17% 31.89 MB 1 min 0.0 1263.0 0.0 test344 base-2.10.6-x86_64.dmg
56 17% 31.18 MB 1 min 0.0 1267.0 0.0 test2 base-2.10.4-x86_64.dmg
57 15% 27.12 MB 2 min 0.0 1066.0 0.0 test23 base-2.10.6-setup.exe
58 20% 32.16 MB 1 min 0.0 1196.0 0.0 test232 base-2.10.8-x86_64-2.dmg
59* 0% None 599 days 0.0 0.0 0.0 test12 base.1.2_Linux_x86_deb.tar.gz
60 14% 26.31 MB 2 min 0.0 1243.0 0.0 test23 base-2.10.4-setup-2.exe
61 0% None Unknown 0.0 0.0 None Idle base-0.9.24.1.exe
Sum: 150.8 MB 0.0 6084.0"""

idPercentage3 = re.findall(r'^\s+([0-9]+)\s+([0-9]+)', output4a, flags=re.MULTILINE)
print (idPercentage3)

谢谢

最佳答案

我建议使用 ^\s*(\d+)\*?\s+(\d+),这使得文字 * 字符对于 是可选的?。我也让你的第一次太空运行成为可选的;允许数字在没有填充的情况下与行的开头对齐似乎是合理的(但如果您愿意,可以将 * 更改回 + )。最后,\d 等同于 [0-9]

完整代码:

import re

output4a = """
54 1% 2.11 MB 52 min 0.0 49.0 0.0 test1 test1_4.1.6_Win_x86_install_en-US.tar
55 17% 31.89 MB 1 min 0.0 1263.0 0.0 test344 base-2.10.6-x86_64.dmg
56 17% 31.18 MB 1 min 0.0 1267.0 0.0 test2 base-2.10.4-x86_64.dmg
57 15% 27.12 MB 2 min 0.0 1066.0 0.0 test23 base-2.10.6-setup.exe
58 20% 32.16 MB 1 min 0.0 1196.0 0.0 test232 base-2.10.8-x86_64-2.dmg
59* 0% None 599 days 0.0 0.0 0.0 test12 base.1.2_Linux_x86_deb.tar.gz
60 14% 26.31 MB 2 min 0.0 1243.0 0.0 test23 base-2.10.4-setup-2.exe
61 0% None Unknown 0.0 0.0 None Idle base-0.9.24.1.exe
Sum: 150.8 MB 0.0 6084.0"""

id_percentage3 = re.findall(
r'^\s*(\d+)\*?\s+(\d+)',
output4a, flags=re.MULTILINE
)

for a, b in id_percentage3:
print(a, b)

输出:

54 1
55 17
56 17
57 15
58 20
59 0
60 14
61 0

关于python - 正则表达式将数值解析为没有星号和空格的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55545687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com