使用不推荐使用的模块'string'

时间:2010-07-03 08:29:36

标签: python string

我刚刚在我的代码上运行了pylint,它显示了这条消息:

Uses of a deprecated module 'string'

我主要使用模块string进行加入/拆分。

>>> names = ['Pulp', 'Fiction']
>>> import string
>>> fullname = string.join(names)
>>> print fullname
Pulp Fiction

以上是一个例子。在我的代码中,我必须经常使用splitjoin,因此我使用的是string模块。

这是否被弃用了?如果是,在Python 2.6中处理拆分/连接的方法是什么?我试过搜索,但我发现自己不清楚,所以我在这里问。

3 个答案:

答案 0 :(得分:17)

相当于您的代码:

' '.join(names)
不推荐使用

string,不推荐使用与str方法重复的某些函数。对于split,您也可以使用:

>>> 'Pulp Fiction'.split()
['Pulp', 'Fiction']

在文档中有一个full list of deprecated functions with suggested replacements

答案 1 :(得分:1)

并非弃用“strings”中的所有函数。 如果你想使用不被弃用的字符串函数,那么从pylint config中的deprecated-modules配置中删除一个字符串。

[IMPORTS]
deprecated-modules=string

答案 2 :(得分:0)

我曾经将Cannot assign to read only property 'keyCode' of demoBtn1splitjoin称为字符串对象的方法,直到有一天我需要提高脚本效率。

使用strip进行性能分析表明,我花了很多时间在这些方法调用上。 Performance tips建议我做一个"副本"在我的范围内避免这种方法:

cProfile

如果我记得很清楚,这个伎俩确实会带来性能提升。

但是,如果我需要在多个函数中使用这些字符串操作函数,我会在"全局范围内制作这些副本"我的程序(不确定这是正确的说法)。 split = str.split join = str.join for _ in xrange(1000000): print join("_", split("Pulp Fiction")) 然后抱怨说我没有使用正确的约定来命名我的变量:

pylint

所以我最后用大写字母命名:

Invalid name "split" (should match (([A-Z_][A-Z0-9_]*)|(__.*__))$)
但是,它有点难看。

有时我会忘记复制和进口的可能性:

SPLIT = str.split
JOIN = str.join

def main():
    for _ in xrange(1000000):
        print JOIN("_", SPLIT("Pulp Fiction"))

然后我收到from string import split, join 警告。