funcを記述してクラスに追加します。 私はのURLからドメインを取得しようと、私は、私は変更する必要がありますどのようなエラーPython:クラスの書き込みでエラーが発生しました
AttributeError: csv instance has no attribute '__setitem__'
を得る?
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)
を使用
なぜここでクラスを使用していますか? 1つのメソッドしかないので、3つの属性はローカル変数と同じように簡単にできます。 –
パラメータ名として予約名を使用して停止してください。 'list'はPythonの組み込みです。 – JClarke
'self.list_url = list_url'と' self.list = list'は元のリストへの参照のみをコピーすることを意図していますが、これらの割り当てはリストのコピーを作成しません。そのためには、 'copy.deepcopy'(またはスライス付きのハック)が必要です。 – cdarke