【发布时间】:2012-08-22 13:24:02
【问题描述】:
我想了一晚上,但找不到快速的方法
首先出现的是replace()
for x,y in {'aa':'a','ab':'b'}.items():
s = s.replace(x,y)
但它不适用于这种情况:'aabcc'
正确的是'abcc' 但输出将是“密件抄送”
我可以编写一些类似的代码(我已经用各种语言编写了这些代码,如 C#、php、actionscript 等。)
output = []
def foo1(x):
if(x!='a'):
output.append(x)
else:
functionPointer = readafterA
def readafterA(x):
if(x=='a'):
output.append('a')
elif(x=='b'):
output.append('b')
else:
output.append('a'+x)
functionPointer = foo1
functionPointer = normalExecute
for singlechar in s:
functionPointer(singlechar)
print(''.join(output))
我不想再写那些代码了,因为:
第一,当字典变大时,那些代码会搞砸。
第二,我相信在 Python 中必须有一些更优雅的方法来完成这项工作
编辑:我已经在第一段中修复了它,但这不是重点。
【问题讨论】:
-
我看不出你在做什么。鉴于您的输入和输出列表,您似乎只想删除第一个字符。
-
你想要像this这样的东西。
-
您使用
replace的示例需要s = s.replace(...)才能执行任何操作。 -
alex,你的解决方案很有效,太棒了!我会给你最好的答案,请多解释一下代码。对python和正则表达式不太熟悉