如何使用str.replace()作为map()中的函数

时间:2011-03-09 22:08:33

标签: python

我有一个从Excel工作表返回的行列表。我想对行中的每个项目使用替换函数,将'替换为\'

然而,这不起作用:

row = map(replace('\'', "\\'"), row)

这只是一个错误,关于替换最多3个参数但只有2个。

有没有办法在python中使用map替换?

5 个答案:

答案 0 :(得分:16)

map( lambda s: s.replace(...), row )

或使用列表理解

[s.replace(...) for s in row]

答案 1 :(得分:5)

这里的惯用Python可能是使用列表理解:

row = [ x.replace('\'', "\\'") for x in row ]

答案 2 :(得分:2)

要替换的第一个arg是一个函数;你所拥有的是对函数调用的尝试。

忘记地图。使用

row = [x.replace(something, other) for x in row]

答案 3 :(得分:2)

理论上,优化方式是

map(operator.methodcaller("replace", '\'', '\\\''), ...)

在实践中,列表理解可能更整洁。


如果您尝试转义字符串,可能有更好的方法(例如,re.escape)。

答案 4 :(得分:1)

row = map(lambda x: x.replace('\'', "\\'"), row)

或者你可以使用re的替换功能。