【发布时间】:2014-08-04 13:19:18
【问题描述】:
我想从一个字符串中删除一个子字符串,例如“a,b,c”中的“a”然后返回“b,c”给我,不管a在字符串中的顺序是什么(如 "a,b,c"、"b,a,c" 等等)。
DELIMITER = ","
def remove(member, members_string):
"""removes target from string"""
members = members_string.split(DELIMITER)
members.remove(member)
return DELIMITER.join(members)
print remove("a","b,a,c")
output: b,c
上述功能按预期工作。
我的问题是我不小心修改了我的代码,它看起来像:
def remove_2(member, members_string):
"""removes target from string"""
members = members_string.split(DELIMITER).remove(member)
return DELIMITER.join(members)
你可以看到我修改了
members = members_string.split(DELIMITER)
members.remove(member)
到
members = members_string.split(DELIMITER).remove(member)
在方法被破坏之后,它会抛出
Traceback (most recent call last):
File "test.py", line 15, in <module>
remove_2("a","b,a,c")
File "test.py", line 11, in remove_2
return DELIMITER.join(members)
TypeError
根据我的理解,members_string.split(DELIMITER) 是一个列表,允许调用remove(),它应该返回新列表并存储到members,但是
当我打印members_string.split(DELIMITER) 时它返回None,它解释了为什么抛出TypeError,我的问题是,为什么它返回None 而不是包含元素“b”和“c”的列表?
【问题讨论】:
标签: python-2.7 typeerror