有没有Pythonic的方法在现有字符串的随机位置插入空格?
有没有一种比较“Python风格”的方法来实现这个:
在字符串
/key_1/
中随机位置插入/spaces_1/
个U+0020 空格
字符,但不能在字符串的开头或结尾插入。
?
这里的 /spaces_1/
是一个整数,而 /key_1/
是一个已经存在的任意字符串。
谢谢。
8 个回答
1
我随便决定一下,你肯定不想让两个空格挨在一起出现——每个插入点只用一次——而且“插入”不包括“追加”和“前置”。
首先,构建一个插入点的列表……
insert_points = range (1, len (mystring))
从这个列表中随机挑选一些,然后对它们进行排序……
import random
selected = random.sample (insert_points, 5)
selected.sort ()
制作你字符串的切片列表……
selected.append (len (mystring)) # include the last slice
temp = 0 # start with first slice
result = []
for i in selected :
result.append (mystring [temp:i])
temp = i
现在,构建新的字符串……
" ".join (result)
2
在Python中,字符串是不可变的,这意味着你不能直接修改它们。不过:
import random
def insert_space(s):
r = random.randint(1, len(s)-1)
return s[:r] + ' ' + s[r:]
def insert_spaces(s):
for i in xrange(random.randrange(len(s))):
s = insert_space(s)
return s
1
这里有一个基于列表的解决方案:
import random
def insert_spaces(s):
s = list(s)
for i in xrange(len(s)-1):
while random.randrange(2):
s[i] = s[i] + ' '
return ''.join(s)