给字符串中的空格编号

To number the blanks in a string

正在尝试对句子进行记忆测试。

对于给定的句子,代码会随机选择 3 个单词并将它们填入空白。它还打印出 'answers'.

The quick brown fox jumps over the lazy dog.               # original sentence

正在进行:

import string, re
from random import sample

original = 'The quick brown fox jumps over the lazy dog.'
o_list = original.split()
picked = sorted(sample(range(1,len(o_list)), 3))

new_sentence = []

for idx, word in enumerate(o_list):
    if idx in picked:
        word = " _____ "
    else:
        word = word
    new_sentence.append(word)

new_sentence = " ".join(new_sentence)
print (new_sentence)

answers = [str(idx+1) + '.' + o_list[w] + '  ' for idx, w in enumerate(picked)]
print (''.join(answers))

输出:

The quick brown  _____  jumps over  _____  lazy  _____     # question sentence
1.fox  2.the  3.dog.  

我想给空格编号,比如:

The quick brown  1. _____  jumps over  2. _____  lazy  3. _____

尝试了正则表达式方式,但它只会将它们替换为空白:

new_sentence = re.sub(r' _____ ', ' ', new_sentence)

实现它的最佳方法是什么?谢谢!

你可以这样做:

import string, re
from random import sample

original = 'The quick brown fox jumps over the lazy dog.'
o_list = original.split()
picked = sorted(sample(range(1,len(o_list)), 3))

new_sentence = []
word_count = 1

for idx, word in enumerate(o_list):
    if idx in picked:
        word = f"{word_count}. _____ "
        word_count += 1
    else:
        word = word
    new_sentence.append(word)

new_sentence = " ".join(new_sentence)
print (new_sentence)

answers = [str(idx+1) + '.' + o_list[w] + '  ' for idx, w in enumerate(picked)]
print (''.join(answers))

您只需添加一个单词计数器并在每次替换单词时增加它。

输出:

The 1. _____  brown fox jumps 2. _____  the lazy 3. _____ 
1.quick  2.over  3.dog.  

这是你想要的吗?

for idx in range(len(picked)):
    new_sentence = re.sub(r"[a-zA-Z0-9 ] _____ ", " %d. _____ " % (idx + 1), new_sentence, 1)

输出就像

'The quick brown 1. _____  jumps over 2. _____  lazy 3. _____ '