将包含屏幕抓取值的列添加到CSV文件

时间:2011-04-05 12:03:21

标签: python csv

我正在制作德克萨斯州埃尔帕索颁发的建筑许可证地图。这是我第一次涉足python的精彩世界,这很有趣,但我无法弄清楚csv模块来挽救我的生命。

我有一个.csv文件,其中包含我需要添加的字段'日期','建筑物编号','建筑类型','描述','项目名称','过期日期','状态'一个名为“地址”的列,其地址与每个建筑物编号相关联。

我已经获得了使用建筑许可证号码获取地址的代码,但我不知道如何按顺序获取每个建筑物编号,使用它来获取许可证的地址,然后将其写入新的“地址”栏目。为什么他们不能把地址放在.csv文件中首先超出我的范围。

这是我到目前为止得到的地址:

from BeautifulSoup import BeautifulSoup
import urllib

CaseNo = "RSP11-00459"    # this is an example of the building permit number format
DBaseEntry = urllib.urlopen("http://permits.elpasotexas.gov/tm_bin/tmw_cmd.pl?tmw_cmd=StatusViewCase&shl_caseno=%s " % CaseNo)
Soup = BeautifulSoup(DBaseEntry.read())
Dang = Soup.findAll("td", { "class" : "ReportCell"})[5]
Address = str(Dang)
TableEntry = Address[23:-5].strip( )
print TableEntry

它不够优雅,但我需要一种方法将建筑物数值作为CaseNo,然后将TableEntry写为(新创建的)地址列的值。 如果重要的话,这些表每个都有100行。

任何想法/建议?

2 个答案:

答案 0 :(得分:0)

我不确定我完全理解您的问题,但如果是关于使用CSV模块,那么您的代码应该是这样的:

import csv,os

with open('foo.csv', 'rb') as r, open('foo.tmp', 'wb') as w:
    reader = csv.reader(r)
    writer = csv.writer(w)

    for row in reader:
        newrow=whatever_processing_you_need(row)
        writer.writerow(newrow)

os.unlink('foo.csv')
os.rename('foo.tmp','foo.csv')

答案 1 :(得分:0)

据我所知,您使用您报告的代码获取了地址,现在您想将此地址附加到您的csv文件中。如果是这样的话,我会使用@bdev解决方案,而“whatever_processing_you_need”将简单地转换为:“找到你检索到的地址的相应行,并附上带有地址的最后一列”。