Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 自然语言中保持间距的随机字符串?_Python_String - Fatal编程技术网

Python 自然语言中保持间距的随机字符串?

Python 自然语言中保持间距的随机字符串?,python,string,Python,String,在Python中,如何在保留原始字符串间距的同时随机化字符串 例如: s = 'The quick brown fox jumps over the lazy dog.' 到 将特定长度的字符串随机化,然后用空格将它们连接起来。我对python不太熟悉,但有正确的格式: s=(随机3长度字符串)+++(随机5长度字符串)+++。。。等等。您可以使用标准库中的随机选项: 随机导入 导入字符串 随机字母=lambda:random.choice(string.ascii\u小写) 打印(“”.jo

在Python中,如何在保留原始字符串间距的同时随机化字符串

例如:

s = 'The quick brown fox jumps over the lazy dog.'


将特定长度的字符串随机化,然后用空格将它们连接起来。我对python不太熟悉,但有正确的格式:
s=(随机3长度字符串)+++(随机5长度字符串)+++。。。等等。

您可以使用标准库中的
随机选项:

随机导入
导入字符串
随机字母=lambda:random.choice(string.ascii\u小写)
打印(“”.join(如果不是c.isalpha()则为c,否则为s中的随机字母())。大写()
哪个输出

Nka hubqs irhmx ddz sffrq syne jsf mdsn sox.
Iky vomwg ojceh uob stphf drel nae zxro qtu.

你可以参考这篇文章:


以下是一个完整的工作解决方案:

import random
s = 'The quick brown fox jumps over the lazy dog.'
L = [c for c in s.lower() if c.isalpha()]
random.shuffle(L)
print(''.join(c if not c.isalpha() else L.pop() for c in s).capitalize())
哪个输出

Nka hubqs irhmx ddz sffrq syne jsf mdsn sox.
Iky vomwg ojceh uob stphf drel nae zxro qtu.
输出字符串仅由原始字符串中的字母组成。使用了奥尔达诺的答案。

看来

  • 大写字母应单独混洗,并且
  • 小写字母应单独洗牌,以及
  • 其余的角色将被单独留下 我们需要创建不同的映射。大概是这样的:

    import string, random
    
    def mapString(xs): 
        xs1 = list(xs[:])
        random.shuffle(xs1)
        return dict(zip(xs, xs1))
    
    def remapString(string):
        mapDict = mapString(string.ascii_lowercase)
        mapDict.update( mapString(string.ascii_uppercase)  )
    
        return ''.join([ (mapDict[s] if s in mapDict else s)  for s in string])
    

    非工作代码在哪里?我们无法在不知道问题出在哪里的情况下解决您的问题。此外,问题描述也不清楚。我猜你想用从字母表中随机选择的字母替换句子中的每个字母?您给出的输出不是原始字符的直接排列;这并不能解决当前的问题。然而,这是一个好的开始——得到适当的更新吗?@Prune确实,我误解了这个问题。这样的解决方案实际上更加优雅。我认为你仍然太复杂了:原始输出的频率计数与输入的频率计数不同:注意输入中有一个g,但输出中有两个g。不要抓住原来的字母;从字母表中随机选择一个。。。除非OP搞错了。@Prune真的<代码>x
  • 也丢失。更新了,提达!我把我的反对票投了反。干得好