我确信这很简单,但我是一个完全的初学者。我试图制作一个工具,我有一个字符串并搜索' 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)
答案 0 :(得分:1)
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
然后迭代你的字符串并检查string [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]
请注意,我们不会迭代到最后一个元素,但直到倒数第二个元素,所以我们可以安全地执行my_list [i + 1]。
如果你需要一个字符串,只需将列表转换回字符串:
my_string = ''.join(my_list)
注意:如果您有两个连续的n后跟一个辅音,请考虑重叠的情况可能会产生不良结果:
annq --> annq --> anqq
这里第一个n后跟一个辅音(n),然后第一个n被第二个n替换(没有有效的变化)。然后下一个循环看到“nq”并将其更改为“qq”,但结果字符串包含“nq”作为结果。
我不知道你是否考虑过这种情况,只是考虑一下。因此,如果您的结果不应包含任何n后跟辅音,那么您将不得不考虑这种情况。