我想将'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'
有可能吗?
答案 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)
您可以使用逐步切片,zip
和str.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