[英]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 domain
, df
引用了該類,該類無法獲取字符串索引,從而失敗了。
簡而言之-更改最后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.