从python 2到python 3的翻译用法

时间:2016-12-27 15:51:06

标签: python python-2.7 python-3.x

我有一个来自python2.7的遗留代码:

f = lambda x:x.translate(None, "1234567890_")

这个lambda函数用于创建一个这样的字符串:

>> my_string = "hello_i_am_from_casablanca78"

看起来像这样:

>> print f(my_string)
>> "helloiamfromcasablanca"

python3这已经不再有效了,还有另一种简单的方法吗?

因为我试过python3而我收到以下错误:

'str' does not support the buffer interface

如果我删除编码,我会得到这个:

TypeError: translate() takes exactly one argument (2 given)

非常感谢。

2 个答案:

答案 0 :(得分:2)

这是让translate在python3中工作的一种方法:首先使用mktrans创建一个表:

tr_tbl = str.maketrans('','' , "1234567890_")
print('hello_i_am_from_casablanca78'.translate(tr_tbl))

答案 1 :(得分:1)

这个lambda似乎太难以打捞了。

更简单地说你可以使用:

def f(s): 
    return ''.join(c for c in s if not c in '1234567890_'