gpt4 book ai didi

python - 从字符串列表中获取子字符串与某个正则表达式匹配的子字符串列表

转载 作者:行者123 更新时间:2023-12-01 01:32:16 27 4
gpt4 key购买 nike

此问题适用于 Python 3.6+(但请随意为其他读者回答较低版本的 Python)。

我想从与正则表达式匹配的每个字符串中提取一个子字符串。

假设我有以下内容:

a = ['v-01-001', 'v-01-002', 'v-02-001', 'v-02-002', 'v-02-003', 'v-03-001']

我想要匹配 v-02-\d\d\d 的所有字符串的最后 3 位数字,即:

['001', '002', '003']

我天真的尝试:

[x[1] for x in list(map(lambda i: re.search(r'v-02-(\d\d\d)', i), a)) if x]

你能想出更优雅的东西吗?

谢谢

最佳答案

你可以这样做:

import re

a = ['v-01-001', 'v-01-002', 'v-02-001', 'v-02-002', 'v-02-003', 'v-03-001']
pattern = re.compile('v-02-(\d{3})$')
print([m.group(1) for m in map(pattern.match, a) if m])

输出

['001', '002', '003']

您也可以使用finditer:

print([m.group(1) for ms in map(pattern.finditer, a) for m in ms])

输出

['001', '002', '003']

关于python - 从字符串列表中获取子字符串与某个正则表达式匹配的子字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52743344/

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