请教下调用python string模块的replace方法出错的原因
大家讲道理
大家讲道理 2017-04-17 16:41:29
[Python讨论组]
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
天蓬老师

没有恶意,但我真的怀疑楼上两位并不太了解Python。

你这么调用在Python中是没问题的,但出现这个问题的真正原因是字符串的replace方法不是用Python实现的,而是用C语言实现的,所以它不支持Python里面的keyword参数特性。

你可以试一下用Python版本的replace

from string import replace
s = '012-3456'
print replace(s, new='', old='-') # 即使将old和new调换位置一样可以正确替换,输出0123456

这个replace方法在string模块中(Lib/string.py文件),是对C语言版本的relace方法的封装,有兴趣的话你可以去看看它的源码

天蓬老师

replace函数在python2.7的文档中描述如下:

str.replace(old, new[, count]) 
Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.

在python中的函数参数分为四种:必选参数、默认参数、可变参数、关键字参数
replace函数中old和new输入必选参数,count属于默认参数
你在test1中使用的调用方式必须在函数定义时声明为关键字参数

关键字参数举例:

def test(**kw):
    for key in kw:
        print "[%s, %s]" % (key, kw[key])
test(x=9)

以上代码输出为[x, 9]

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号