2013-10-23 34 views
0

我有一张表,其中包含一个街道名称以及它的第一个和最后一个门牌号。我想要做的就是打印出来的范围为各街道的名字,所以我最终的东西是这样的:Python:每行的打印范围

1 The Street 
2 The Street 
3 The Street 
1 Main Street 
2 Main Street 
etc. 

我是新来的Python,这是我这么远:

>>> import csv 
>>> inp = csv.reader(open("/tmp/HSN.csv", "r"), delimiter = ',') 
>>> a = (line[0]) #street name column 
>>> b = int(line[1]) #first house number column 
>>> c = int(line[2]) #last house number column 
>>> for d in range(b, c+1): 
     print a, d 
     continue 

不幸的是,这似乎只能做CSV文件中最后一个条目的范围。有没有人有任何想法如何打印出该范围内的所有数字,同时还打印出该范围内每个数字的街道名称?

+0

我不太确定我明白什么#第一个房号列和#last房号列真正的意思。你能展示一些例子吗? – David

+0

请发布您的输入文件格式 – yemu

回答

0

你在哪里定义线?这可能是以前的测试遗留下来的。你的逻辑很好,你只是想为每一行做。试试这个:

import csv 
inp = csv.reader(open("/tmp/HSN.csv", "r"), delimiter = ',') 
for line in inp: 
    a = (line[0]) #street name column 
    b = int(line[1]) #first house number column 
    c = int(line[2]) #last house number column 
    for d in range(b, c+1): 
     print a, d 
+0

谢谢,这工作完美。除了缺少用于定义行的代码之外,看起来我几乎是正确的。 – andyp

1

是您的示例缺少代码? line变量来自哪里?

下面的代码应该让你开始:

inp = csv.reader(open("/tmp/HSN.csv", "r"), delimiter = ',') 
for line in input: 
    street_name = line[0] 
    first_house_num = int(line[1]) 
    last_house_num = int(line[2]) 
    for house_num in range(first_house_num, last_house_num + 1): 
    print('{} {}'.format(house_num, street_name) 
  1. 遍历每一条街道在文件
  2. 环招摇过市让每一个街道的名字和射程范围并打印出每个号码在单独的线上