在python 3中为字符串添加字符

时间:2011-03-08 21:13:12

标签: python string python-3.x

我目前有一个字符串,我想通过在每个字符之间添加空格来编辑,所以我目前有s = 'abcdefg',我希望它成为s = 'a b c d e f g'。使用循环有没有简单的方法呢?

3 个答案:

答案 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]