如何从字符串中移除多个字符?解决replace()报NoneType不可调用错误
问题分析与解决
错误原因
字符串未正确初始化
你的lists变量赋值时,HTML内容没有用引号包裹,Python会将其当作代码解析,导致语法错误,最终lists未被正确初始化,变成None,调用replace()时自然抛出TypeError: 'NoneType' object is not callable。变量名覆盖内置类型
循环中使用list作为变量名,这会覆盖Python内置的list类型,后续若要创建列表会出现异常,必须避免用内置名称作为自定义变量名。未保留替换结果
字符串是不可变类型,replace()会返回新字符串,但你每次替换后都将结果存在新变量中,原lists并未更新,相当于每次都在原始字符串上重复替换,最终只有最后一次替换生效且未保留结果。
修正后的代码
# 给HTML字符串添加引号,完成正确初始化 lists = '<div class="d-map" itemprop="geo" itemscope="" itemtype="http://schema.org/GeoCoordinates"><meta content="29.028856" itemprop="latitude"/><meta content="-110.955923" itemprop="longitude"/><div id="map" style="height: 230px;"></div></div>' char_remove = ["<", ">","[", "]", "=", ":", "/" ] # 替换时更新原变量,同时避免使用内置类型名作为变量 for char in char_remove: lists = lists.replace(char, " ") print(lists)
补充说明
Python中字符串不可变,replace()不会修改原字符串,必须将返回的新字符串重新赋值给变量才能保留修改。此外,永远不要使用Python内置类型名(如list、str、int)作为自定义变量名,否则会导致内置功能失效。
内容的提问来源于stack exchange,提问作者Angel Panda
相关产品推荐
相关产品推荐

