with open("data.txt") as f:
sites=[x.strip() for x in f]
ranges=[]
for x in sites:
x=x.split(".")
num=int(x[0][x[0].index("web")+3:])
if ranges:
if num-ranges[-1][-1]==1:
ranges[-1].append(num)
else:
ranges.append([num])
else:
ranges.append([num])
print ranges
print "web["+",".join(str(x[0]) if len(x)==1 else str(x[0])+"-"+str(x[-1]) for x in ranges)+"].maxi.com"
#print hosts
lines = open("log.txt").readlines()
numbers = [int(line.split(".")[0][3:]) for line in lines]
out = [[]]
index = 0
for i in xrange(len(numbers) - 1):
out[index].append(numbers[i])
if (numbers[i + 1] - numbers[i] != 1):
out.append( [] )
index += 1
out[-1].append(numbers[-1])
strings = [str(number[0]) if len(number) == 1 else str(number[0]) + "-" + str(number[-1]) for number in out]
print ",".join(strings)
输出:
^{pr2}$我的看法是:
最好把循环改成更具Python式/功能性的。在
使用perl,您可以使用^{} 模块来压缩数字序列。在
下面的解决方案可以处理混合和无序的站点列表。在
填充
解析.pl
^{pr2}$这样运行:
输出:
可能是神秘的
@numbers = $nums =~ /$pre(\d+)$post/g
扩展为与正则表达式匹配的项数组,并将其保存在@numbers
中。在请注意,此解决方案将整个文件加载到内存中。在
相关问题 更多 >
编程相关推荐