我需要帮助来理解此代码。我无法理解循环。有人可以分解并解释吗? “ i = 0”在此程序中代表什么。我还必须为丢失和无效的数据添加错误处理。我非常感谢。谢谢!
i = 0
while i < len(line):
if line[i] == '<':
i = i + 1
while i < len(line) and line[i] != '>':
tag += line[i]
i = i + 1
if tag not in fields:
break;
i = i + 1;
while i < len(line) and line[i] != '<':
value += line[i]
i = i + 1
break;
[您好,我尽可能回答:说的很简单:While循环0检查行尾While循环1检查标记(或行)的结尾While循环2检查值(或行)的结尾]
更详细:下面的数据设置了链接和代码将在html TAG中检查的TAG。它还创建列表,将在列表中添加结果(以后称为value)
def process_file(link):
data = ur.urlopen(link)
fields = ["TITLE", "ARTIST", "COUNTRY", "COMPANY", "PRICE", "YEAR"]
title = []
artist = []
country = []
company = []
price = []
year = []
[FOR LOOP]这里的代码遍历每一行,定义了unicode并删除了空格。
for line in data:
line = line.decode('utf-8')
line = line.lstrip()
line = line.rstrip()
在这里,在检查行之前将标记和值复位。计数器i也会重置为从行的开头开始。
tag = ""
value = ""
i = 0
[WHILE LOOP 0]i = 0是该行的开始,而while循环一直循环直到i到达该行的长度,以检查该行是否仍然存在。
while i < len(line):
if子句检查html标签是否打开。
if line[i] == '<':
i = i + 1
[WHILE LOOP 1]如果是这样,它将i加1并运行另一个while循环,直到标签关闭(>)或到达行尾为止。
while i < len(line) and line[i] != '>':
tag += line[i]
i = i + 1
如果标签不是int字段列表,则它会中断While-Loop 0
if tag not in fields:
break;
当while循环成功并且标记结束时,将添加此+1,以转到该行中的下一个字符
i = i + 1
[WHILE LOOP 2]然后转到下一个字符,并假定有一个value出现。while循环一直循环,直到再次找到html标签开始为止。 '
while i < len(line) and line[i] != '<':
value += line[i]
i = i + 1
然后破坏外部while循环0。
break
现在,它检查tag是哪个字段,并添加在[[For Loop的运行中找到的value,并运行For Loop]的下一行>if tag == "TITLE":
title.append(value)
elif tag == "ARTIST":
artist.append(value)
elif tag == "COUNTRY":
country.append(value)
elif tag == "COMPANY":
company.append(value)
elif tag == "PRICE":
price.append(float(value))
elif tag == "YEAR":
year.append(int(value))
最后,它返回开头定义的列表。
return title,artist,country,company,price,year
对反馈和我的回答得到改善感到高兴。干杯