我想在每隔一个逗号中添加字符串@

时间:2016-08-03 10:54:40

标签: python python-3.x

我想将'a,b,c,d,e,f,g,e'更改为'a,b@c,d@e,f@g,e'

输入:

'a,b,c,d,e,f,g,e'

输出:

'a,b@c,d@e,f@g,e'

有可能吗?

6 个答案:

答案 0 :(得分:1)

你可以试试这个,虽然它有点复杂:

a = 'a,b,c,d,e,f,g,e'
l = a.split(',')
res=''.join([i+',' if num%2==0 else i+'@' for num,i in enumerate(l)]).strip('@').strip(',')

答案 1 :(得分:1)

是的,这是可能的,这是另一种方法,只需要创建一个新的字符串,并根据条件更改添加的内容。

def func(s):
    res = ''
    i = 0
    for c in s:
        if c == ',':
            i += 1
        res += '@' if c == ',' and i % 2 == 0 else c
    return res

>>> a = 'a,b,c,d,e,f,g,e'
>>> func(a)
'a,b@c,d@e,f@g,e'

答案 2 :(得分:1)

您可以使用逐步切片,zipstr.join来实现这一目标。

a = 'a,b,c,d,e,f,g,e'

pairs = zip(a.split(',')[::2], a.split(',')[1::2])
print '@'.join(','.join(p) for p in pairs)
# a,b@c,d@e,f@g,e

这假设有奇数个逗号和"对"意图由@划分(如评论中所述)。

答案 3 :(得分:1)

试试这个 -

    >>> a = 'a,b,c,d,e,f,g,e'
    >>> z=','.join([val if (idx)%2!=0 else '@'+val for idx,val in enumerate(a.split(','))]).replace('@','',1).replace(',@','@')
    >>> print z
    >>> a,b@c,d@e,f@g,e

答案 4 :(得分:1)

对于正则表达爱好者:

import re

input = 'a,b,c,d,e,f,g,e'

output = re.sub(r',([^,]*),', r',\1@', input)

答案 5 :(得分:0)

a = 'a,b,c,d,e,f,g,e'


b = a.split(',')

it = iter(b[ 1: -1])

result = []

while True:
    try:
        result.append("{0}@{1}".format(next(it), next(it)))
    except StopIteration:
        break

print(",".join([b[0]] + result + [b[-1]]))

输出:

a,b@c,d@e,f@g,e