gpt4 book ai didi

python - 提取分隔符之间具有特定长度的整数

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:32 25 4
gpt4 key购买 nike

给定一个字符串列表,例如:

L = ['1759@1@83@0#1362@0.2600@25.7400@2.8600#1094@1@129.6@14.4', 
'1356@0.4950@26.7300@2.9700',
'1354@1.78@35.244@3.916#1101@2@40@0#1108@2@30@0',
'1430@1@19.35@2.15#1431@3@245.62@60.29#1074@12@385.2@58.8#1109',
'1809@8@75.34@292.66#1816@4@24.56@95.44#1076@47@510.89@1110.61']

我需要提取分隔符 #@ 之间长度为 4 的所有整数,并提取第一个和最后一个整数。没有花车。

我的解决方案有点过于复杂 - 用空格替换然后应用 this解决方案:

pat = r'(?<!\S)\d{4}(?!\S)'
out = [re.findall(pat, re.sub('[#@]', ' ', x)) for x in L]
print (out)
"""
[['1759', '1362', '1094'],
['1356'],
['1354', '1101', '1108'],
['1430', '1431', '1074', '1109'],
['1809', '1816', '1076']]
"""

是否可以更改正则表达式以不使用 re.sub 进行替换?是否有其他性能更好的解决方案?

最佳答案

要允许没有前导或尾随分隔符的第一个和最后一个出现,您可以使用负环视:

(?<![^#])\d{4}(?![^@])

(?<![^#])(?:^|#)同义词.这同样适用于否定前瞻。

看直播demo here

关于python - 提取分隔符之间具有特定长度的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55096830/

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