rof*_*fle 2 python string conditional replace
我在Python中有一个unicode字符串,基本上需要逐个字符地完成,并根据规则列表替换某些字符串.其中一条规则是将a其改为öif a后n.此外,如果一行中有两个元音字符,它们将被一个元音字符替换:.所以,如果我有字符串"natarook",最简单,最有效的方法是"nötaro:k"什么?如果重要的话,使用Python 2.6和CherryPy 3.1.
编辑:连续两个元音的意思是相同的元音(oo,aa,ii)
# -*- coding: utf-8 -*-
def subpairs(s, prefix, suffix):
def sub(i, sentinal=object()):
r = prefix.get(s[i:i+2], sentinal)
if r is not sentinal: return r
r = suffix.get(s[i-1:i+1], sentinal)
if r is not sentinal: return r
return s[i]
s = '\0'+s+'\0'
return ''.join(sub(i) for i in xrange(1,len(s)))
vowels = [(v+v, u':') for v in 'aeiou']
prefix = {}
suffix = {'na':u'ö'}
suffix.update(vowels)
print subpairs('natarook', prefix, suffix)
# prints: nötaro:k
prefix = {'na':u'ö'}
suffix = dict(vowels)
print subpairs('natarook', prefix, suffix)
# prints: öataro:k
Run Code Online (Sandbox Code Playgroud)