有没有Pythonic的方法在现有字符串的随机位置插入空格?

1 投票
8 回答
4270 浏览
提问于 2025-04-16 07:43

有没有一种比较“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)

撰写回答