Writerow不会将某些变量打印到csv fi

2024-10-02 12:35:57 发布

您现在位置:Python中文网/ 问答频道 /正文

以下代码无法将名称和地址变量写入csv文件。当我使用数字、单词或“write”变量测试它时,这些将被记录在csv中,但“Writeaddress”和“WriteName”不会*。(同样,使用这些变量的原始源也会留下空白)

import requests, sys, pyperclip, bs4, csv
StationList = open('CTA Station Addresses.csv', 'w', newline='')
StationWrite = csv.writer(StationList)
for i in range(149):
    id = str(i)
    res = requests.get('http://www.transitchicago.com/travel_information  /station.aspx?StopId=' + id)
    res.raise_for_status()
    Station = bs4.BeautifulSoup(res.text)
    Name = Station.select('.rtehdng')
    Address = Station.select('#ctl07_divAddress')
    Write = 0
    if Name == []:
        print('missing name')
        Write = 1
    else:
        #print(Name[0].getText())
        WriteName = Name[0].getText()
        pass
    if Address == []:
        print('missing address')
        Write = 1
    else:
        #print(Address[0].getText())
        WriteAddress = Address[0].getText()
        pass
    if Write == 0:
        StationWrite.writerow([Write, WriteName, WriteAddress])
    Write = 0
StationList.close()

*(我可以执行“writerows([3,Write,Writename]),CSV行将是“3,0,”)


Tags: csvnameforifaddressresrequestswrite
1条回答
网友
1楼 · 发布于 2024-10-02 12:35:57

我无法重现你的错误,但你得到的数据嵌入了换行符和空格,这会使csv看起来很奇怪。在编写csv之前,我已经清理了脚本和数据,最后得到了station、address条目。我认为没有必要编写Write,因为它在脚本中始终是0,在我的脚本中甚至不存在,因为我使用了异常处理。你知道吗

import requests, sys, pyperclip, bs4, csv

with open('CTA Station Addresses.csv', 'w', newline='') as StationList:
    StationWrite = csv.writer(StationList)
    for i in range(149):
        _id = str(i)
        res = requests.get('http://www.transitchicago.com/travel_information/station.aspx?StopId=' + _id)
        res.raise_for_status()
        Station = bs4.BeautifulSoup(res.text, 'lxml')
        try:
            name = Station.select('.rtehdng')[0].getText().strip()
            address = Station.select('#ctl07_divAddress')[0].getText().splitlines()[-1].strip()
        except IndexError as e:
            print("No data for station", _id)
            continue
        if not name or not address:
            print('Empty elements for station', _id)
            continue
        print(repr(name), repr(address))
        StationWrite.writerow([name, address])

相关问题 更多 >

    热门问题