考虑到单词的长度,用随机 Ascii 字母替换给定百分比的字母

replacing a given percentage of letters with random Ascii letters considering the length of words

有一列不同长度的字符串(例如 "Apple" , "Pear" ,"cucumber" ,"watermelon" ),总共有27个字母。 目的是随机选择这 27 个字母中的 10% , 20% , ....., 100% 并根据单词的长度用一些随机的 Ascii 字母替换它们。在某种程度上,我们从较长的单词中选择更多的字母,如 "Watermelon"(10 个字母),而从较短的单词中选择较少的字母,如 "Pear"(4 个字母)。

P.s:我的目标是模拟单词列表中的拼写错误,然后应用 Levenshtein Distance 通过比较有拼写错误的单词和正确的单词形式来找到最佳匹配。(例如转换 "Apple" 到 "apfle" 然后使用 LD 将其更正为 "Apple")

我不确定我是否理解正确,但如果我理解了,也许你可以尝试这样的事情:

import random
import string

letters = string.ascii_lowercase
output = []

for element in list_of_words:
    element = list(element)
    for n in range(len(element)):
        if random.randint(0,9)==9:
            element[n] = random.choice(letters)
    output.append(str(element))
print (output)

这将遍历列表中每个单词的每个字母,并以 10% 的概率将其替换为随机小写字母。然后它将生成的单词保存到第二个单词列表中。