迭代Python中的字符串并添加一些新字符

时间:2014-05-08 10:35:57

标签: python python-2.7

我需要在Python中迭代一个字符串,并在某些情况下在现有字符之后添加一些空白字符。所以我需要像下面的代码(ofc,它不起作用):

for i, c in enumerate(some_string):
  if c == ' ':
    rand_value = random.randint(0, 2)
    if rand_value == 0:
      # Place two whitespaces here
    elif rand_value == 1:
      # Place three whitespaces here

此外,我知道在迭代它时我无法修改字符串对象。

如何在Python中编写此类代码?

示例:

输入 - "some string with whitespace characters" 可能的输出 - "some string with whitespace characters""some string with whitespace characters""some string with whitespace characters"

提前致谢。

2 个答案:

答案 0 :(得分:4)

我会去:

import re
from random import randint

text = 'this is some example text'
for i in xrange(5):
    print re.sub(' ', lambda m: m.group() * randint(1, 3), text)

给出了:

this   is   some  example text
this is some  example   text
this  is some example  text
this is   some example   text
this is   some example text

这就是,找到一个空格,然后用1到3个空格替换它......它应该足够直接,比循环/重新连接等更容易适应其他场景......

答案 1 :(得分:3)

简明的解决方案:

from random import choice
output = ''.join([choice(['  ', '   ']) if c==' ' else c for c in input])

对于输入字符串中的每个字符,如果当前字符是空格,则输出随机选择的两个或三个空格;对于除空格以外的任何输入,复制到输出。然后,由于[list comprehension]的结果是一个列表,请加入字符以创建一个新字符串。