Python分裂字符串并混淆中间

时间:2012-10-23 15:16:39

标签: python string split

我在python程序中遇到问题...我需要程序在保持外部两个字母完整的同时混淆单词的中间部分...我相信我已成功将单词分成三个不同的部分,我只是无法弄清楚我应该如何争夺这个词的中间部分

word = input("Enter a word")

first_letter = word[0]

last_letter = word[-1]

still_to_scramble = word[1:-1]

我应该使用randoms吗?或者有一个简单的方法,抱歉,我对编码相对较新。

2 个答案:

答案 0 :(得分:4)

您可以使用随机包中的shuffle

import random
letters = list(still_to_scramble)
random.shuffle(letters)
scrambled = ''.join(letters)

以下是它的工作原理:

>>> s
'$123abc$'
>>> first_letter = s[0]
>>> last_letter = s[-1]
>>> middle_parts = list(s[1:-1])
>>> random.shuffle(middle_parts)
>>> ''.join(middle_parts)
'b3a2c1'

小心,不要这样做:

>>> middle_parts_random = random.shuffle(middle_parts)

shuffle 到位 - 这是一种奇特的方式,它说它不会返回洗牌位,而是修改它。它实际上返回None,你可能会被它绊倒,因为你不会看到错误:

>>> middle_parts_random = random.shuffle(middle_parts)
>>> middle_parts_random # Huh? nothing is printed!
>>> middle_parts_random == None # Ah, that's why. Darn you in-place methods!
True

答案 1 :(得分:0)

我添加了一个正则表达式来扩展Burhan Khalid的解决方案。这个添加适用于多个单词的输入,我认为有些可能会有用。

$ cat ./jumble.py
#!/usr/bin/env python
import re
import random

def jumble(s):
    l = list(s)
    random.shuffle(l)
    return(''.join(l))

line = raw_input("Input string to jumble: ")
print(re.sub(r'\b(\w)(\w+)(\w)\b', lambda m: "".join([m.group(1),jumble(m.group(2)),m.group(3)]), line))

例如:
    $ ./jumble.py
    输入字符串混乱:我只是输入一些任意字符串
    我是jsut etnrneig aabtrrriy sritng

注意:上面的示例是在Red Hat Enterprise Linux 6.7系统上完成的,默认为python-2.6.6-64.el6.x86_64