拆分字符串,直到在 python 中找到 5-7 位数字

维沙尔 A.

我有如下字符串:

1338516 -...pair - 5pk 1409093 -...re Wax 3Pk
1409085 -...dtnr - 5pk 1415090 -...accessories
490663 - 3 pack 1490739 -...2 - 3 pack

我想要做的是,拆分这些字符串,使第一个字符串是1338516 -...pair - 5pk,第二个是1409093 -...re Wax 3Pk.

目前,我可以使用以下代码提取数字:

list(filter(lambda k: '...' in k, reqText))
lst1 = ''.join(lst)
numbers = re.findall(r'\d+', lst1)
numbers1 = [x for x in numbers if len(x) > 3]

有什么建议么?

第四只鸟

您可以将 split 与模式一起使用:

[^\S\n]+(?=\d{5,7}\b)

解释

  • [^\S\n]+匹配 1 个或多个不带换行符的空格
  • (?=\d{5,7}\b)正向前瞻,向右断言 5-7 位数字,后跟单词边界

正则表达式演示

import re

pattern = r"[^\S\n]+(?=\d{5,7}\b)"

lst = [
    "1338516 -...pair - 5pk 1409093 -...re Wax 3Pk",
    "1409085 -...dtnr - 5pk 1415090 -...accessories",
    "490663 - 3 pack 1490739 -...2 - 3 pack"
]

for s in lst:
    print(re.split(pattern, s))

输出

['1338516 -...pair - 5pk', '1409093 -...re Wax 3Pk']
['1409085 -...dtnr - 5pk', '1415090 -...accessories']
['490663 - 3 pack', '1490739 -...2 - 3 pack']

另一种选择可能是匹配方法:

\b\d{5,7}\b.*?(?=[^\S\n]+\d{5,7}\b|$)

正则表达式演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章