Python:每行的打印范围

时间:2013-10-23 19:44:02

标签: python range

我有一个包含街道名称的表格以及它的第一个和最后一个门牌号码。我想要做的是打印每个街道名称的范围,所以我最终得到这样的东西:

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文件中的最后一个条目做了范围。有没有人知道如何打印出该范围内的所有数字,同时还打印出该范围内每个数字的街道名称?

2 个答案:

答案 0 :(得分: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. 获取每条街道的名称和范围
  3. 遍历街道范围并在单独的行上打印每个号码

答案 1 :(得分: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