I would like to add brackets to each character in a string. So
"HelloWorld"
should become:
"[H][e][l][l][o][W][o][r][l][d]"
I tried a straightforward loop:
word = "HelloWorld"
newWord = ""
for letter in word:
newWord += "[%s]" % letter
But can I do it more efficiently? I'm concerned about the repeated string concatenations.
See also: How to insert a character after every 2 characters in a string — note that techniques based on .join
will not add anything before the first (or after the last) character, unless explicitly separately added.
>>> s = "HelloWorld"
>>> ''.join('[{}]'.format(x) for x in s)
'[H][e][l][l][o][W][o][r][l][d]'
If string is huge then using str.join
with a list comprehension will be faster and memory efficient than using a generator expression(https://stackoverflow.com/a/9061024/846892):
>>> ''.join(['[{}]'.format(x) for x in s])
'[H][e][l][l][o][W][o][r][l][d]'
From Python performance tips:
Avoid this:
s = ""
for substring in list:
s += substring
Use s = "".join(list)
instead. The former is a very common and catastrophic mistake when building large strings.