开发者

transforming the same character into different characters depending on position in word

I thank coffee-grinder very much for asking a question for me a few hours ago. Now that I am a member, I'd like to rephrase the question a bit.

What is the best way to state th开发者_JS百科at a word-initial 's' transforms into a '$' and the remainder of the 's' transforms into a '5' using regular expressions and python?

I attempted to do this in the following code, but the outcome is wrong. The general rule for 's' conversion is greedy and does not give the word-initial 's' rule to come into play. I would appreciate any help with this. Thanks.

text = 'sassy'

for (regexp,subst) in [ (r's', '5'),(r'^s', '$') ]:

  text = re.sub(regexp,subst,text)

...

text

5A55y


You're just not being specific enough. You need a non-zero lookbehind assertion on the first one.

>>> text = 'sassy'
>>> for (regexp,subst) in [ (r'(?<=.)s', '5'),(r'^s', '$') ]:
...   text = re.sub(regexp,subst,text)
... 
>>> text
'$a55y'

That, or change the order.

All bets are out when one of your substitutions feeds into another match though.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜