Python字符串替换中的特殊字符
我在Python字符串替换中的特殊字符,python,Python,我在python中有一个字符串,我想替换该字符串中的任何特殊字符 我做了如下的事情 col_name = 'AN*_Gen_**Air_&Outlet_$Temp' reps = (('_&', ' '), ('*_', '('), ('_*', ')'), ('#_', '{'), ('_#', '}'), ('_##', ';'), ('_$', '.'), ('_$$', ','), ('_**', '=')) original_cols = reduc
python
中有一个字符串,我想替换该字符串中的任何特殊字符
我做了如下的事情
col_name = 'AN*_Gen_**Air_&Outlet_$Temp'
reps = (('_&', ' '), ('*_', '('), ('_*', ')'), ('#_', '{'), ('_#', '}'), ('_##', ';'), ('_$', '.'),
('_$$', ','), ('_**', '='))
original_cols = reduce(lambda a, kv: a.replace(*kv), reps, col_name)
输出:
'AN(Gen)*Air Outlet.Temp'
预期产出:
'AN(Gen=Air Outlet.Temp'
在这里,我看到字符串中的\u**
首先被)*
替换,而不是=
,因为中的\u*
代表)
我应该怎么做才能得到正确的字符串?将(''.**','=')
放在('*.','(')
之前,因为匹配的字符越多,优先级越高
reps = (('_**', '='), ('_&', ' '), ('*_', '('), ('_*', ')'), ('#_', '{'), ('_#', '}'), ('_##', ';'), ('_$', '.'),
('_$$', ','))
输出
'AN(Gen=Air Outlet.Temp'
将\u**
放在\u*
之前,同样地,对于\u35;
和\u$
@internet\u用户,您的解决方案对我有效,但有没有办法避免将放在*
之前?您也可以使用正则表达式进行一次扫描。在当前解决方案中,字符串被扫描多次。当存在不同的p时,您希望得到什么输出可能性?为什么在你的情况下,=
比)*
更正确?如果使用、、、、、、、、、、、\u35;
,会发生什么?为什么?你的解决方案对我来说很有效,但我有办法避免它。我想这样做,而不用担心销售代表的位置也很有帮助