Python for循环 - 你去的剥线

时间:2017-02-11 21:22:37

标签: python for-loop strip

我正在尝试删除一行代码,以便只保存最后的注释。由于<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Exercises</title> <link rel="stylesheet" href="style.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootswatch/3.3.7/darkly/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> </head> <body> <div class="container-fluid"> <div class="jumbotron"> <h2 class="text-center"><b>FAVORITE VIDEO GAMES <small>(all genres) <span class="glyphicon glyphicon-globe"></span></small></b></h2> </div> <div class="text-center row"> <div class="col-sm-6 col-md-6"> <ul class="list-group"><h4>These are the games that James like the most</h4> <li class="list-group-item">...</li> <li class="list-group-item">...</li> <li class="list-group-item">...</li> </ul> </div> <div class="col-sm-6 col-md-6"> <ul class="list-group"><h4>These are the games that <b>YOU</b> like the most</h4> <li class="list-group-item">`empty`</li> <li class="list-group-item">`empty`</li> <li class="list-group-item">`empty`</li> </ul> </div> </div> <hr> <br> <div class="row"> <div class="col-sm-12 col-md-12 col-lg-12"> <form class="text-center" action="index.html" method="post"> Game: <input type="text" name="game-name" value="" placeholder="Choose the game"> Rate: <input type="text" name="game-rate" value="" placeholder="Rate the game"> <input class='btn btn-xs btn-success' type="button" name="add-game" value="Add Game"> </form> <br> <div class="container"> <table class="table table-bordered table-striped"> <thead> <th>Name of the game</th> <th>Rating</th> <th><span class="glyphicon glyphicon-remove"></span></th> </thead> <tbody> <!-- Here will be added the games --> </tbody> </table> </div> <!-- Close CONTAINER --> </div> </div> <!-- Close ROW --> </div> <!-- Close CONTAINER-FLUID --> </div> <script src='script.js'></script> </body> </html>符号可以包含在#标记内,为此,我尝试循环捕获成对的""标记,以便忽略其中的任何"标记#标记。当我在下面的代码中使用代码可视化工具时,在第二个for循环之后,似乎打包处理"",好像它刚刚剥离了第一个s标记。我无法在这里看到我做错了什么,因为我在第19行中包含的print语句显示"在第二个s之后被剥离,但是当代码返回到顶部,它从第一个"之后开始再次循环。知道我在这里做错了什么?

"

3 个答案:

答案 0 :(得分:2)

如果我正确理解你的问题,你只想保留最后的评论(这里有#lots of hash(#)符号)。 为此,您不需要嵌套for循环。

s = '("8# " + str" #9 " + line) #lots of hash(#) symbols here'

quoteCount = 0

for char in s:
    if quoteCount%2 == 0:
        if char == '#':
            s = s[s.index('#'):]
            break

    if char == '"':
        quoteCount = quoteCount + 1
        s = s[s.index('"'):]
        s = s.lstrip('"')

print(s)

答案 1 :(得分:0)

使用正则表达式更容易删除带引号的字符串:

import re
s = '("8# " + str" #9 " + line) #lots of hash(#) symbols here'
pattern = r'"[^"]*"'
s = re.sub(pattern, '', s)
print s[s.index('#'):]

输出:

#lots of hash(#) symbols here

答案 2 :(得分:0)

您的代码过于复杂,所以我建议您使用另一种方法来查找评论,例如已经提到的正则表达式或我想出的那个。

s = '("8# " + str" #9 " + line) #lots of hash(#) symbols here'
s = s[s.rfind('"') + 1:]  # Get to the last quotation mark

if s.find('#') >= 0:  # The first # sign should start the comment if there is one
    s = s[s.find('#'):]

else:
    s = ''  # No comment was found

print(s)