用破折号(-)python分割字符串

时间:2018-09-03 16:15:18

标签: python

我想获取一个字符串并将其分成用“-”分隔的部分。 输入:

aabbcc

并输出:

aa-bb-cc

有办法吗?

5 个答案:

答案 0 :(得分:3)

如果您要基于同一字母进行操作,则可以使用itertools.groupby()进行操作,例如:

In []:
import itertools as it
s = 'aabbcc'
'-'.join(''.join(g) for k, g in it.groupby(s))

Out[]:
'aa-bb-cc'

或者如果您希望以2的块的形式使用它,可以使用iter()zip()

In []:
n = 2
'-'.join(''.join(p) for p in zip(*[iter(s)]*n))

Out[]:
'aa-bb-cc'

注意:如果字符串长度不能被2整除,这将删除最后一个字符-您可以将zip(...)替换为itertools.zip_longest(..., fillvalue=''),但不清楚OP是否存在此问题)

答案 1 :(得分:1)

如果您考虑创建破折号对,可以使用以下功能:

def pair_div(string):
    newString=str() #for storing the divided string
    for i,s in enumerate(string):
        if i%2!=0 and i<(len(string)-1):   #we make sure the function divides every two chars but not the last character of string.
            newString+=s+'-'               #If it is the second member of pair, add a dash after it
        else:
            newString+=s                   #If not, just add the character
    return(newString)

例如:

[In]:string="aazzxxcceewwqqbbvvaa"
[Out]:'aa-zz-xx-cc-ee-ww-qq-bb-vv-aa'

但是,如果您考虑将相同的字符分成一组并用破折号分隔,则最好使用正则表达式方法。

BR, 沉

答案 2 :(得分:0)

您可以尝试

data = "aabbcc"
"-".join([data[x:x+2] for x in range(0, len(data), 2)])

答案 3 :(得分:0)

如果您希望将字符串分成2个字符的块,那么这将对您有所帮助。

import textwrap
s='aabbcc'
lst=textwrap.wrap(s,2)
print('-'.join(lst))

第二个属性定义编号。特定组中需要的字符数

答案 4 :(得分:0)

s =   'aabbccdd'
#index 01234567 
new_s = ''

1)

for idx, char in enumerate(s):
    new_s+=char
    if  idx%2 != 0:
        new_s += '-'

print(new_s.strip('-'))
# aa-bb-cc-dd

2)

new_s = ''.join([s[i]+'-' if i%2 != 0  else s[i] for i in range(len(s))]).strip('-')
print(new_s)

# aa-bb-cc-dd