我想获取一个字符串并将其分成用“-”分隔的部分。 输入:
aabbcc
并输出:
aa-bb-cc
有办法吗?
答案 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