|
本帖最后由 轨迹 于 2017-6-26 19:14 编辑
# -*- coding:utf-8 -*-
import codecs
class HotelInfo:
def __init__(self,intitle):
self.title=intitle
self.pricelist=[]
def setPrice(self,price):
price_=price.split('\n')
price_=int(price_[0])
self.pricelist.append(price)
def getavgprice(self):
uniquelist=set(self.pricelist)
uniquelist=list(uniquelist)
uniquelist.sort
if len(uniquelist)>3:
return str(uniquelist[2])
else:
return str(uniquelist[0])
targetfilename='杭州千岛湖.txt'
hotelinfolist=[]
lastclass=HotelInfo('test')
lastclass.setPrice('0')
hotelinfolist.append(lastclass)
with codecs.open(targetfilename,'r','utf-8') as f:
for line in f.readlines():
temparr=line.split('¥ ')
print(temparr[0])
print(temparr[1])
if hotelinfolist[-1].title==temparr[0]:
hotelinfolist[-1].setPrice(temparr[1])
else:
hotelinfolist.append(HotelInfo(temparr[0]))
hotelinfolist[-1].setPrice(temparr[1])
with codecs.open('clearHotelPrice.txt','a','utf-8') as wf:
for nowcount in range(len(hotelinfolist)):
writeline=hotelinfolist[nowcount].title+hotelinfolist[nowcount].getavgprice()
wf.write(writeline)
# wf.write('\n')
wf.flush()
运行结果如下:(后面内容省略,只贴上前三条)
5星级;千岛湖丽景酒店 豪华型;高级大床房 面积25-30㎡ 位于1-5层 大床1.8m 大床 公用卫浴 有窗;535
5星级;千岛湖丽景酒店 豪华型;高级大床房 面积25-30㎡ 位于1-5层 大床1.8m 大床 公用卫浴 有窗;455
5星级;千岛湖丽景酒店 豪华型;高级双床房 面积25-30㎡ 位于1-5层 双床1.2m 双床 公用卫浴 有窗;455
按照程序编写的预想效果,不应该出现第一条和第二条数据重复的情况。(我标注了字体为蓝色)(价格字体为红色)
因为第一条和第二条结果,是一个类型数据,只是结尾的价格有变化。这两条结果应该合并成一个结果进行输出。
但是不知道为什么,会出现现在的情况。只有从第三条结果往后的运行效果符合预期。
原始数据请参考附件。
哪位大侠能给解答一下,这个太让人疑惑了。完全理解不了,为什么会这样。
而且我在使用pycharm debug模式调试跟踪运行情况的时候,为什么会运行到 if 语句的时候,就跳过 if 语句段,返回到 for 循环开头重新执行了呢。完全理解不了。 崩溃了,呵呵………………
|
|