Python中的基本搜索和替换isn';t执行

Python中的基本搜索和替换isn';t执行,python,Python,我试图用Python编写一些东西,这将简单地从字符串输入中删除任何HTML标记。但由于某些原因,代码不会在我的主Python安装上执行(只是挂起),并在Udacity接口上被杀死 我哪里做错了 def remove_tags(sentence): list = [] state = 0 while state == 0: location1 = sentence.find('<') location2 = sentence.find(

我试图用Python编写一些东西,这将简单地从字符串输入中删除任何HTML标记。但由于某些原因,代码不会在我的主Python安装上执行(只是挂起),并在Udacity接口上被杀死

我哪里做错了

def remove_tags(sentence):
    list = []
    state = 0
    while state == 0:
        location1 = sentence.find('<')
        location2 = sentence.find('>',location1)
        if location1 != -1:
            chamber = sentence[location1:location2+1]
            sentence.replace(chamber,'')
        elif location1 == -1:
            state = 1
            return sentence.split()
    return sentence.split()

print remove_tags('''<table cellpadding='3'>
                     <tr><td>Hello</td><td>World!</td></tr>
                     </table>''')
def删除标签(句子):
列表=[]
状态=0
当state==0时:
位置1=句子。查找(“”,位置1)
如果位置1!=-1:
分庭=句子[地点1:地点2+1]
句子.替换(第“”号分庭)
elif位置1==-1:
状态=1
返回句子split()
返回句子split()
打印删除标签(“”)
地狱世界!
''')

您正在执行替换,但没有将结果存储在任何位置,因此结果将丢失。我想你的意思是这样的:

sentence = sentence.replace(chamber,'')
def remove_tags(html):
    while '<' in html:
        start = html.find('<')
        end = html.find('>', start)
        tag = html[start:end+1]
        html = html.replace(tag, '', 1)
    return html.split()
而不是:

sentence.replace(chamber,'')
字符串在Python中是不可变的,因此不能“就地”修改。始终会创建一个新字符串,因此如果要保留该字符串,则必须将其指定给名称


如果
while
循环没有找到
您正在执行替换,但没有将结果存储在任何位置,则该循环将仅退出(通过
return
语句),因此它将丢失。我想你的意思是这样的:

sentence = sentence.replace(chamber,'')
def remove_tags(html):
    while '<' in html:
        start = html.find('<')
        end = html.find('>', start)
        tag = html[start:end+1]
        html = html.replace(tag, '', 1)
    return html.split()
而不是:

sentence.replace(chamber,'')
字符串在Python中是不可变的,因此不能“就地”修改。始终会创建一个新字符串,因此如果要保留该字符串,则必须将其指定给名称


如果
while
循环未找到
,则
while
循环将仅退出(通过
return
语句),要终止
while
循环,需要包含一条更改
状态值的语句


实际上,您正在等待没有“”,以便
while
循环终止,您需要包含一条语句来更改
状态的值


事实上,你在等待没有“对不起,我漏掉了一行内容,在添加到帖子中时会改变状态。”。遗憾的是,代码仍然没有产生结果:/选择一种控制结构--
while
或内部
return
,并坚持这样做。这种方式太让人困惑了(至少对于像我这样的傻瓜来说是如此)。对不起,我漏掉了一行内容,在添加到帖子中时会改变状态。遗憾的是,代码仍然没有产生结果:/选择一种控制结构--
while
或内部
return
,并坚持这样做。这种方式太令人困惑了(至少对于像我这样的傻瓜来说是如此)。