python - 高效查找并替换模式 'n' +(辅音)

标签 python replace

我确信这很简单,但我是一个完全的初学者。我正在尝试制作一个工具,其中有一个字符串并搜索 '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)

最佳答案

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”且 string[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]。

如果在 ens 处您需要一个字符串,只需将列表转换回字符串即可:

my_string = ''.join(my_list)

注意:请考虑到,如果您有两个连续的 n 后跟辅音,则重叠的大小写可能会产生不良结果:

annq --> annq --> anqq

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

不知道你有没有考虑过这个问题,你考虑一下吧。因此,如果您的结果不包含任何 n 后跟辅音,您将必须考虑这种情况。

关于python - 高效查找并替换模式 'n' +(辅音),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43326449/

相关文章:

python - 使用seaborn时条件和输入之间的形状不一致

python - 如何更改pyside中的窗口标题?

python - python中文件的随机查找和修改

vim自动替换

Python - 按照命令写入文件

python - 为Python中的数据帧列表中的单个数据帧赋值

python - 根据输入/输出对节点进行排序

python - 当时间序列中的一个值出现多次时替换它

javascript - js用 "\n"替换一些字符串

excel - 删除单个单元格中变量字符串的多个实例