Ich möchte Func schreiben und das zur Klasse hinzufügen. Ich benutzePython: Fehler beim Schreiben Klasse
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)
Ich versuche Domain von den URLs zu bekommen, aber ich bekomme Fehler
AttributeError: csv instance has no attribute '__setitem__'
Was sollte ich ändern?
Warum benutzen Sie überhaupt eine Klasse? Es gibt nur eine Methode, und die drei Attribute könnten genauso gut lokale Variablen sein. –
Hey, verwende reservierte Namen als deine Parameternamen. 'list' ist in python eingebaut. – JClarke
Ist es beabsichtigt, dass 'self.list_url = list_url' und' self.list = list' nur Verweise auf die ursprünglichen Listen kopieren, erstellen diese Zuordnungen keine Kopien der Listen. Dafür brauchst du 'copy.deepcopy' (oder einen Hack mit einem Slice). – cdarke