python - 根据单词中的位置将相同的字符转换为不同的字符

标签 python regex

非常感谢咖啡研磨机几个小时前向我提出问题。现在我是成员(member)了,我想稍微改一下这个问题。

使用正则表达式和 python 来说明词首“s”转换为“$”以及其余“s”转换为“5”的最佳方式是什么?

我尝试在下面的代码中执行此操作,但结果是错误的。 's' 转换的一般规则是贪婪的,并且不会使词首 's' 规则发挥作用。 我将不胜感激任何帮助。谢谢。

text = 'sassy'

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

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

...

text

5A55y

最佳答案

你只是不够具体。您需要对第一个断言进行非零后行断言。

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

那个,或者改变顺序。

当您的一个替补进入另一场比赛时,所有投注均无效。

关于python - 根据单词中的位置将相同的字符转换为不同的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6149464/

相关文章:

javascript - 使用 javascript 正则表达式验证每个列表项一个字母的逗号列表

javascript - 获取与 JQuery/Javascript 或正则表达式中的模式匹配的所有字符串

Python请求隐藏url中传递的参数

python - 如何刷新已经打开的网页

php - unicode 模式下的 preg_split : delim_capture not working?

regex - 在每个第 4 个数字/数字后添加一个空格 Oracle 11G

包含一个或多个指定字母的字符串的 JavaScript 正则表达式

python - Dataframes 列表,如果行包含特殊字符串,则删除 Dataframe 列(列具有不同的名称)

python - 如何在Python中生成按时间排序的uid?

python - 为一个键分配多个值?