我正在尝试使用某个字符组_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_
并每次用列表中的随机字替换它?
答案 0 :(得分:7)
同时使用str.replace
和random.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))