我刚刚在我的代码上运行了pylint
,它显示了这条消息:
Uses of a deprecated module 'string'
我主要使用模块string
进行加入/拆分。
>>> names = ['Pulp', 'Fiction']
>>> import string
>>> fullname = string.join(names)
>>> print fullname
Pulp Fiction
以上是一个例子。在我的代码中,我必须经常使用split
和join
,因此我使用的是string
模块。
这是否被弃用了?如果是,在Python 2.6中处理拆分/连接的方法是什么?我试过搜索,但我发现自己不清楚,所以我在这里问。
答案 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 demoBtn1
,split
和join
称为字符串对象的方法,直到有一天我需要提高脚本效率。
使用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
警告。