有效地查找和替换模式n+(辅音)

2024-09-30 18:30:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我相信这很简单,但我完全是个初学者。我正在尝试制作一个工具,其中我有一个字符串,搜索'n'+[任何辅音],并用该辅音替换它-例如

aaanq->;aaaqq。你知道吗

我能想到的唯一一件事是,正如你在下面看到的,每个可能的nC组合都有一个单独的案例。有没有更好的办法?你知道吗

nC_test = input('Enter word: ')

if 'nq' in nC_test:
    print('nC pattern found ')
    nC_test = nC_test.replace('nq', 'qq')
    print(nC_test)

Tags: 工具字符串testgtinput案例printenter
1条回答
网友
1楼 · 发布于 2024-09-30 18:30:28

python中的字符串是不可变的,因此如果要修改它们,只需将它们转换为列表:

my_list = list(my_string)

然后创建一个辅助函数来检查字符是否是辅音。你知道吗

这可以通过多种方式完成,而且您可能需要检查大写字符、特殊辅音(西班牙语),因此可以随意实现此功能,以满足您的需要:

def is_consonant(character):
    consonants = ['b','c',...,'z']   # complete the list yourself
    if character in consonants:
        return True
    else:
        return False

然后遍历字符串并检查字符串[i]是'n'且字符串[i+1]是辅音的位置。你知道吗

for i in range(len(my_list)-1): 
    if my_list[i] == 'n' and is_consonant(my_list[i+1]):
        print('nC pattern found ')
        my_list[i] = my_list[i+1]  

注意,我们直到最后一个元素才迭代,直到倒数第二个元素,所以我们可以安全地执行我的\u列表[i+1]。你知道吗

如果需要字符串,只需将列表转换回字符串:

my_string = ''.join(my_list)

注意:如果两个连续的n后跟一个辅音,请考虑重叠的情况可能会产生不希望的结果:

annq  > annq  > anqq

在这里,第一个n后面跟着一个辅音(n),然后第一个n被第二个替换(没有有效的变化)。然后下一个循环看到“nq”并将其更改为“qq”,但结果字符串包含一个“nq”。你知道吗

我不知道你是否考虑过这个案子,只是考虑一下。所以,如果你的结果是不包含任何n后面的辅音,你将不得不考虑在这种情况下。你知道吗

相关问题 更多 >