在Python中,如何用列表中的随机项替换字符串中的单词?

时间:2015-03-24 23:47:04

标签: python

我正在尝试使用某个字符组_n_并将其替换为数组中的随机字符串。

在wordlibrary.py中:

    import random

    nouns =   ['wombat','zebra','elephant','lamp','desk','computer','python','castle','king','scribble','doodle','motorcycle','car','train','plane']

    def chooseNoun():
        randomNoun = random.randint(0,len(nouns))
        nounChoice = nouns[randomNoun-1]
        return nounChoice

现在,在storyCreator.py中:

    import wordLibrary

    originalString = input("Type a sentence or story. Use \'_n_\' to denote a noun, \'_adj_\' to denote an adjective, \'_v_\' to denote a verb, \'_adv_\' to denote an adverb, or \'_l_\' to denote a location.     Type Here: ")

    nounCheck = '_n_'

如何在字符串中找到_n_并每次用列表中的随机字替换它?

4 个答案:

答案 0 :(得分:7)

同时使用str.replacerandom.choice,并记住分配新字符串:

while '_n_' in oldString:
    oldString = oldString.replace('_n_', random.choice(nouns))

答案 1 :(得分:2)

string.replace有一个限制替换次数的论据。

循环显示正在修改的字符串中字符串的出现次数,并在每次循环中替换1次。

答案 2 :(得分:1)

我相信你想为每次出现_n_做一个新的随机选择 你可以用空格分割句子(对于你可能想要使用re.findall的更狡猾的解决方案),然后要么附加原始单词,要么附加一个单词,如果单词是_n _。

newString = []

for n in originalString.split():                                                                │
    newString.append(n=='_n_' and random.choice(nouns) or n)

' '.join(newString)

示例:

“我的_n_非常高,但没有我的_n _那么强大。”

输出:

“我的非常高,但不如我的袋熊强。”

答案 3 :(得分:0)

如果您可以让字符插入单词{n}而不是_n_,则可以使用str.format()

originalString.format(n=random.choice(nouns), v=random.choice(verbs), adj=random.choice(adjectives), adv=random.choice(adverbs), l=random.choice(locations))
相关问题