Замена строк значениями из словаря с помощью random.sample - PullRequest
0 голосов
/ 28 мая 2020

Предположим, я создаю madLib и хочу заменить каждое слово из строки, содержащей слово 'plural noun'. По сути, пользователь получает приглашение, в котором говорится о вводе существительных во множественном числе, и эти вводят go в словарь (pluralnoDict).

Я использовал random.choice, и это работает, однако, очевидно, что повторы являются проблемой. Я пробовал random.sample, однако вместо того, чтобы выбирать одно слово из заданного образца, код заменяет слова целым образцом.

Есть ли способ заменить каждую строку, используя random.sample из списка словарей? Например:

Оригинал: 'plural noun' имеют 'plural noun' и 'plural noun'. Ожидается: 'birds' имеют 'wings' и 'feet'.

Ниже приведено l oop, которое я использую для замены строк существительных во множественном числе.

for key in pluralnoDict:
        target_word = "({0})".format(key)
        while target_word in madString:
            madString = madString.replace(target_word, random.choice(pluralnoDict[key]), 1)

Ответы [ 2 ]

1 голос
/ 28 мая 2020

Вы заглядывали в библиотеку random? Вы можете использовать его для получения случайных индексов, поэтому, насколько я понимаю, возможное решение может выглядеть примерно так:

import re
import random

list_of_words = ["dogs", "cats", "mice"]

mad_lib = "the quick brown plural noun jumped over the lazy plural noun"

while "plural noun" in mad_lib:
    random_index = random.randint(0, len(list_of_words))
    mad_lib = re.sub("plural noun", list_of_words[random_index], mad_lib, 1)
    del list_of_words[random_index]

print(mad_lib)
0 голосов
/ 28 мая 2020

Если вы хотите использовать все существительные, но в случайном порядке, вы можете использовать random.shuffle и сделать что-то вроде:

from random import shuffle

target_word = "plural noun"
mad_str = "The 'plural noun' have 'plural noun' and 'plural noun'"
plural_nouns = ["birds", "feet", "wings"]
shuffle(plural_nouns)
for noun in plural_nouns:
    mad_str = mad_str.replace(target_word, noun, 1)
print(mad_str)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...