簡體   English   中英

TypeError:__init __()為參數'fieldnames'獲得了多個值

[英]TypeError: __init__() got multiple values for argument 'fieldnames'

我已經在網站上進行了網上抓取練習,並且嘗試將數據放入可以導出到csv的pandas數據框中,當我遇到一個TypeError: __init__() got multiple values for argument 'fieldnames'出現了。 我想使用csv模塊寫入文件。 有人可以解釋錯誤如何發生以及如何解決嗎? 我的代碼如下:

from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import csv

my_url = 'https://www.allagents.co.uk/find-agent/london/'

uClient = uReq(my_url)

page_html = uClient.read()

uClient.close()

page_soup = soup(page_html, 'html.parser')

containers = page_soup.findAll('div', {'class':'itemlabel3'})

filename = "webscrape.csv" 
records = []

for container in containers:
    comp_name   = container.find('div', {'class':'labelleft2 col-md-10'}).div.h4.a.text

    address=container.find('div', {'class':'labelleft2 col-md-10'}).div.p.text.replace('\n','')

    tel         = container.find('div', {'class':'labelleft2 col-md-10'}).div.find('p', {'style':'clear: both; margin-bottom: 15px;'}).strong.text

    records.append({'company': comp_name, 'address': address, 'telephone': tel})
writer = csv.DictWriter(filename, "w", fieldnames=['company', 'address', 'telephone'])

writer.writeheader()

for r in records:
    writer.writerow(r)

錯誤出現在網上:

writer = csv.DictWriter(filename, "w", fieldnames=['company', 'address', 'telephone'])

在此先感謝您的幫助。

csv.DictWriter ,前兩個參數是文件對象(不是文件名),然后是fieldnames (您指定為"w" )。 嘗試這個:

with open(filename, 'w') as f:
    writer = csv.DictWriter(f, ['company', 'address', 'telephone'])
    # write stuff in this block

我懷疑您對DictWriter的調用有太多參數:

writer = csv.DictWriter(filename, "w", fieldnames ...
                                   ^
                           what is this?

我認為應該是:

f = open(filename, 'w')
writer = csv.DictWriter(f, fieldnames ...

在您的呼叫中, fieldnames參數被分配為"w" ,但是您還將提供自己的版本作為列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM