我有如下字符串:
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] 删除。
我来说两句