我目前有一个字符串,我想通过在每个字符之间添加空格来编辑,所以我目前有s = 'abcdefg'
,我希望它成为s = 'a b c d e f g'
。使用循环有没有简单的方法呢?
答案 0 :(得分:15)
>>> ' '.join('abcdefg')
'a b c d e f g'
答案 1 :(得分:2)
您确实指定了“使用循环”
Python中的字符串是可迭代的,这意味着您可以循环它。
使用循环:
>>> s = 'abcdefg'
>>> s2=''
>>> for c in s:
... s2+=c+' '
>>> s2
'a b c d e f g ' #note the trailing space there...
使用理解,您可以生成一个列表:
>>> [e+' ' for e in s]
['a ', 'b ', 'c ', 'd ', 'e ', 'f ', 'g '] #note the undesired trailing space...
您可以使用map
:
>>> import operator
>>> map(operator.concat,s,' '*len(s))
['a ', 'b ', 'c ', 'd ', 'e ', 'f ', 'g ']
然后你有那个讨厌的列表而不是字符串和尾随空格......
您可以使用正则表达式:
>>> import re
>>> re.sub(r'(.)',r'\1 ',s)
'a b c d e f g '
您甚至可以使用正则表达式修复尾随空格:
>>> re.sub(r'(.(?!$))',r'\1 ',s)
'a b c d e f g'
如果您有列表,请使用join
生成字符串:
>>> ''.join([e+' ' for e in s])
'a b c d e f g '
您可以使用string.rstrip()
字符串方法删除不需要的尾随空格:
>>> ''.join([e+' ' for e in s]).rstrip()
'a b c d e f g'
您甚至可以写入内存缓冲区并获取字符串:
>>> from cStringIO import StringIO
>>> fp=StringIO()
>>> for c in s:
... st=c+' '
... fp.write(st)
...
>>> fp.getvalue().rstrip()
'a b c d e f g'
但是由于join适用于列表或迭代,你可以在字符串上使用join:
>>> ' '.join('abcdefg')
'a b c d e f g' # no trailing space, simple!
以这种方式使用join
是最重要的Python习语之一。
使用它。
还有性能方面的考虑因素。阅读Python中各种字符串连接方法的this comparison。
答案 2 :(得分:0)
使用 f 字符串,
s = 'abcdefg'
temp = ""
for i in s:
temp += f'{i} '
s = temp
print(s)
a b c d e f g
[Program finished]