【问题标题】:Randomize characters in string but keep formatting随机化字符串中的字符但保持格式化
【发布时间】:2019-12-17 08:17:58
【问题描述】:

所以我有这样的字符串:

id = 'ee9baadc-46bc-4486-a78b-830f5b2bcfc9'

如何随机化字符串的字符,但将破折号保持在同一位置,例如:

id2 = '9eebaadc-46bc-4846-7a8b-380f5b2bcf9c'

这是我目前所拥有的,但它也会扰乱破折号的位置:

id2 = ''.join(random.sample(id,len(id)))

【问题讨论】:

  • 在第一部分中包含4f 的字符串是否是示例字符串的有效排列?

标签: string python-2.7


【解决方案1】:

您可以使用split(在破折号上)、sample 随机化每个部分并保留破折号位置以随机化每个子列表和几个joins 以将它们重新绑定在一起:

from random import sample

id_ = 'ee9baadc-46bc-4486-a78b-830f5b2bcfc9'
id_ = "-".join("".join(sample(s, len(s))) for s in id_.split("-"))

避免调用变量id——它会覆盖一个内置函数。

【讨论】:

    【解决方案2】:
    base_id = 'ee9baadc-46bc-4486-a78b-830f5b2bcfc9'
    base = base_id.split('-')[0]
    random_base = ''.join(random.sample(base,len(base)))
    id = re.sub(r'ee9baadc', random_base, base_id)
    

    这就足够了,随机化第一组字符......如果我愿意,我可以在整个字符串上迭代。

    【讨论】:

      猜你喜欢
      • 2015-09-07
      • 1970-01-01
      • 2013-10-14
      • 2019-08-07
      • 2016-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-22
      相关资源
      最近更新 更多