簡體   English   中英

Python:編寫類時出錯

[英]Python: error in writing class

我想編寫func並將其添加到類中。 我用

import pandas as pd
import tldextract

domain = []
df = pd.DataFrame()
df['urls'] = ['ru.vk.com', 'eng.facebook.com', 'ru.ya.ru']
urls = df.urls.values.tolist()
class csv:
    def get_domain(self, list_url, list, df):
        self.list_url = list_url
        self.list = list
        self.df = df
        for i, url in enumerate(list_url):
            get_domain = tldextract.extract(url)
            subdomain = get_domain[0] + '.' + get_domain[1] + '.' + get_domain[2]
            if subdomain.startswith('.'):
                subdomain = subdomain[1:]
            elif subdomain.endswith('.'):
                subdomain = subdomain[:-1]
            elif subdomain.startswith('www.'):
                subdomain = subdomain[4:]
            list.append(subdomain)
        df['subdomain'] = list

df = csv()
df.get_domain(urls, domain, df)

我嘗試從網址獲取域,但出現錯誤

AttributeError: csv instance has no attribute '__setitem__'

我應該改變什么?

通過使df引用csv對象而不是panda數據幀,來命名用於創建csv實例df的變量(與數據框項目相同)。 然后,當您嘗試調用get domaindf引用了該類,該類無法獲取字符串索引,從而失敗了。


簡而言之-更改最后2行中的變量名稱,例如

csv_df = csv()
csv_df.get_domain(urls, domain, df)

順便說一句,這不是一個錯誤,但是我很確定get_domain的最后一行應該是

self.df['subdomain'] = self.list

(因為您希望更改class屬性而不是給定變量,所以整個函數中的所有變量都一樣。)

而且,您不應命名變量list或任何其他保留關鍵字。 可能會導致問題。

我不知道您還應該更改什么,但是您絕對不能在get_domain方法中使用get_domain變量。 從此開始,然后查看它是否可以解決任何問題。

(get_domain函數在類的第二行,而get_domain變量在類的第六行)

編輯:還有一件事,該方法中的代碼與...中的值沒有任何關系...讓我們將其稱為測試數據。 這可能是錯誤的,也可能是正確的,但是您不知道。

暫無
暫無

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

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