Python 在字符串中拆分字符

Python 在字符串中拆分字符,python,Python,我有一个字符串,比如'01301347',我想把它拆分成'01-13-30-01-13-34-47' 是否可以使用split()执行类似操作?您希望拼接和连接,而不是拆分: '-'.join(mystr[i:i+2] for i in xrange(0, len(mystr)-1)) 您还可以使用itertools.islice和itertools.izip: '-'.join((a+b for a,b in itertools.izip(mystr, itertools.islice(mys

我有一个字符串,比如
'01301347'
,我想把它拆分成
'01-13-30-01-13-34-47'


是否可以使用
split()
执行类似操作?

您希望拼接和连接,而不是拆分:

'-'.join(mystr[i:i+2] for i in xrange(0, len(mystr)-1))
您还可以使用
itertools.islice
itertools.izip

'-'.join((a+b for a,b in itertools.izip(mystr, itertools.islice(mystr, 1, len(mystr)))))

要拼接和连接,而不是拆分:

'-'.join(mystr[i:i+2] for i in xrange(0, len(mystr)-1))
您还可以使用
itertools.islice
itertools.izip

'-'.join((a+b for a,b in itertools.izip(mystr, itertools.islice(mystr, 1, len(mystr)))))
或者您可以使用:

>>> '-'.join(a+b for a,b in zip(s, s[1:]))
'01-13-30-01-13-34-47'
或者您可以使用:

>>> '-'.join(a+b for a,b in zip(s, s[1:]))
'01-13-30-01-13-34-47'
说明: 相当于
+
a+b=add(a,b)

将函数应用于iterable中每个值的未打包参数列表

>>> list(starmap(add,zip(*[iter(s)]*2)))
['01', '30', '13', '47']
最后,我们只是加入他们:

>>> '-'.join(starmap(add,zip(*[iter(s)]*2)))
'01-30-13-47'

顺便说一句,我们可以避免使用
starmap
add
,只需以稍微不同的方式编写即可:

>>> '-'.join(map(''.join,zip(*[iter(s)]*2)))
'01-30-13-47'
说明: 相当于
+
a+b=add(a,b)

将函数应用于iterable中每个值的未打包参数列表

>>> list(starmap(add,zip(*[iter(s)]*2)))
['01', '30', '13', '47']
最后,我们只是加入他们:

>>> '-'.join(starmap(add,zip(*[iter(s)]*2)))
'01-30-13-47'

顺便说一句,我们可以避免使用
starmap
add
,只需以稍微不同的方式编写即可:

>>> '-'.join(map(''.join,zip(*[iter(s)]*2)))
'01-30-13-47'

看这里:Split应该用于查找字母或数字,这是一个低效的过程,所以当你可以做其他事情时不要使用它。看这里:Split应该用于查找字母或数字,这是一个低效的过程,所以当你可以做其他事情时不要使用它。