时间:2015-12-15 08:37:43

标签: python

我有这段代码:

> list=str(raw_input('Enter pipe seprated list [PRIMARY|SECONDARY]:'))
> n_list="^"+list+"$" 
> print n_list

当我执行它时,它会提示我:

  

输入管道分隔列表[PRIMARY | SECONDARY]:PRIMARY

如上所述,如果我给PRIMARY,它会给我结果:

  

^ PRIMARY $

并且如果将输入提供为PRIMARY | SECONDARY:

  

输入管道分类列表[PRIMARY | SECONDARY]:PRIMARY | SECONDARY

我得到的输出为:

  

^ PRIMARY | SECONDARY $

这里我希望输出为:

^ PRIMARY $ | ^ SECONDARY $ 如果我输入 PRIMARY | SECONDARY 。请帮助我实现这一目标。

3 个答案:

答案 0 :(得分:2)

根据|进行拆分,在每个项目的开头和结尾添加^$。然后使用|加入他们。

>>> s = 'PRIMARY|SECONDARY'
>>> print '|'.join(['^' + i + '$' for i in s.split('|')])
^PRIMARY$|^SECONDARY$
>>> s = 'PRIMARY'
>>> print '|'.join(['^' + i + '$' for i in s.split('|')])
^PRIMARY$
>>> s = 'PRIMARY|SECONDARY|TERTIARY'
>>> print '|'.join(['^' + i + '$' for i in s.split('|')])
^PRIMARY$|^SECONDARY$|^TERTIARY$
>>> 

答案 1 :(得分:1)

你必须用|(管道)拆分你的字符串,并用前缀(^)和后缀($)

连接它
l=str(raw_input('Enter pipe seprated list [PRIMARY|SECONDARY]:'))
n_l = "|".join(["^" + l_t + "$" for l_t in l.split('|')])
print n_l

答案 2 :(得分:0)

为了完整起见,作为已提出的aiohttp.web / split解决方案的替代方案,您也可以join replace|:< / p>

$|^

但是,由于在此解决方案中您必须同时编写>>> s = 'PRIMARY|SECONDARY' >>> '^' + s.replace('|', '$|^') + '$' '^PRIMARY$|^SECONDARY$' ^两次,我仍然会更喜欢$ / split方式。

另一种解决方案:您也可以使用join,而不是使用正则表达式'^PRIMARY$|^SECONDARY$'。行为应该是一样的。