Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python字符串替换中的特殊字符_Python - Fatal编程技术网

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;
,会发生什么?为什么?你的解决方案对我来说很有效,但我有办法避免它。我想这样做,而不用担心销售代表的位置也很有帮助