Nli*_*tis 2 python infinite-loop
我正在为体验和知识编写搜索引擎.现在,我正在构建一个爬虫及其附带的实用程序.其中之一是URL规范化程序.这就是我现在正在努力构建的内容,更具体地说,我不得不采用一种方法来获取网址,并将字母大写为"%"符号.我的代码到目前为止:
def escape_sequence_capitalization(url):
''' The method that capitalizes letters in escape sequences.
All letters within a percent - encoding triplet (e.g. '%2C') are case
insensitive and should be capitalized.
'''
next_encounter = None
url_list = []
while True:
next_encounter = url.find('%')
if next_encounter == -1:
break
for letter in url[:next_encounter]:
url_list.append(letter)
new_character = url[next_encounter + 1].upper()
url_list.append(new_character)
url = url[next_encounter:]
for letter in url:
url_list.append(letter)
return ''.join(url_list)
Run Code Online (Sandbox Code Playgroud)
有人可以指导我到我的错误的位置吗?我会很感激.谢谢.
编辑:这是我想要实现的:
http://www.example.com/a%c2%b1b ? http://www.example.com/a%C2%B1b
Run Code Online (Sandbox Code Playgroud)
msw*_*msw 10
通过静态分析,它永远循环,因为你while True永远不会破坏.那么哪里可以打破?仅在break声明next_encounter变为等于-1 时才在声明中; 所以你可以推断它永远不会.
为什么不呢?尝试print next_encounter之后url.find.你会很快看到的
url = url[next_encounter:]
Run Code Online (Sandbox Code Playgroud)
几乎你所希望的,只有它给你一个比你希望的更多的角色.
为什么我这样呈现呢?主要是因为print学习语言的人经常低估其价值.