【问题标题】:To number the blanks in a string对字符串中的空格进行编号
【发布时间】:2021-11-25 08:36:29
【问题描述】:

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

给定一个句子,代码随机选择 3 个单词并将它们填空。它还会打印出“答案”。

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)

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

【问题讨论】:

  • 怎么样word = str(idx+1) + ". _____ "
  • @furas 我认为这行不通,因为您将打印出“您所在的单词”(例如,如果您替换的第一个单词是索引 4 中的单词,则数字将输出 4,而不是预期的数字 1)。
  • @DanteCulaciati 你是对的 - 我没有检查所有代码是如何工作的。

标签: python string replace


【解决方案1】:

你可以这样做:

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.  

【讨论】:

    【解决方案2】:

    这是你想要的吗?

    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. _____ '
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-17
      • 2014-09-20
      • 1970-01-01
      • 1970-01-01
      • 2021-05-06
      相关资源
      最近更新 更多