函数参数预处理的python装饰器

2024-04-23 14:20:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我最初的问题是我需要剥离一个字符串,然后由一个运算符拆分。在

s = " a & b | c & d "
l = map(lambda x : map(lambda x:x.strip() , x.strip().split('&')), s.strip().split('|'))

这对人们来说太麻烦了,所以我考虑使用decorator来做这个strip()预处理。在

这是我目前的解决方案,但不起作用!在

更新:

^{pr2}$

Tags: lambda字符串map运算符decorator解决方案splitstrip
1条回答
网友
1楼 · 发布于 2024-04-23 14:20:25

我不得不承认,我不完全理解你为什么需要一个装修工。在

标记这些表达式的一种相对简单的方法是使用正则表达式:

In [12]: re.findall(r'[^|&\s]+|&|[|]', ' a & b | c & d ')
Out[12]: ['a', '&', 'b', '|', 'c', '&', 'd']

In [13]: re.findall(r'[^|&\s]+|&|[|]', 'asdasd&sdasd| asdsa & asdsda')
Out[13]: ['asdasd', '&', 'sdasd', '|', 'asdsa', '&', 'asdsda']

regex由三个组件或ed组成:

  • [^|&\s]+匹配&|和空格以外的字符序列。在
  • &匹配&。在
  • [|]匹配|。在

如果不需要捕获运算符,可以将正则表达式简化为r'[^|&\s]+'。在

编辑:如果您不想像您在注释中所暗示的那样分割空格,则以下操作应该有效:

^{pr2}$

相关问题 更多 >