有一种pythonic方式来实现这个:
插入/ spaces_1 / U + 0020 SPACE 字符到/ key_1 /随机 开头或结尾以外的头寸 字符串。
/ spaces_1 /是整数,/ key_1 /是任意现有字符串。
感谢。
答案 0 :(得分:2)
字符串是不可变的,因此您无法在适当的位置更改它们。但是:
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 :(得分:1)
我将随意决定你不要相邻地插入两个空格 - 每个插入点仅使用一次 - 并且“insert”不包括“append”和“prepend”。
首先,构建一个插入点列表......
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 :(得分: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)
答案 3 :(得分:1)
因为还没有人使用map
:
import random
''.join(map(lambda x:x+' '*random.randint(0,1), s)).strip()
答案 4 :(得分:0)
如果您想添加多个空格,请转到
s[:r] + ' '*n + s[r:]
答案 5 :(得分:0)
来了......
def thePythonWay(s,n):
n = max(0,min(n,25))
where = random.sample(xrange(1,len(s)),n)
return ''.join("%2s" if i in where else "%s" for i in xrange(len(s))) % tuple(s)
答案 6 :(得分:0)
我们将随机选择添加空格的位置 - 在字符串的char 0,1,... n-2之后(n-1是最后一个字符,之后我们不会放置空格);然后通过用(原始字符)+''替换指定位置中的字符来插入空格。这与Steve314的解决方案一致(即保留您不需要连续空格的假设 - 这限制了您可以拥有的总空间),但不使用列表。
因此:
import random
def insert_random_spaces(original, amount):
assert amount > 0 and amount < len(original)
insert_positions = sorted(random.sample(xrange(len(original) - 1), amount))
return ''.join(
x + (' ' if i in insert_positions else '')
for (i, x) in enumerate(original)
)