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

18

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

然而,这并不起作用:

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

这只是一个错误,关于replace至多可以使用3个参数,但只有2个参数。

在Python中是否有一种方法可以在map中使用replace?

5个回答

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

或者使用列表推导式

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

6
这里惯用的 Python 写法可能是使用列表推导式:
row = [ x.replace('\'', "\\'") for x in row ]

2

replace函数的第一个参数应该是一个函数,而你尝试的是函数调用。

忘记map吧。使用

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

2
在理论上,优化的方式是:
map(operator.methodcaller("replace", '\'', '\\\''), ...)

实际上,列表理解可能更简洁。


如果你试图转义字符串,可能有更好的方式(例如re.escape)。


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

或者你可以使用 re 的替换函数。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接