Python isim içinde söz bulma

lwitchy

Hectopat
Katılım
15 Kasım 2019
Mesajlar
84
Daha fazla  
Sistem Özellikleri
Intel I5-4210U GT820M 8GB Ram
Cinsiyet
Erkek
Herkese merhaba. Uzatmadan geçeyim ben Python ile oyun sunucusu yapıyorum ve isim engellemesi yapmak istiyorum. Engelleme mantığı şöyle JSON dosyası içerisinden kötü bir söz alacak mesela "ksöz" ve eğer kullanıcı isminin içerisindeyse fail paketi gönderiyor. Evet yaptığım sistem çalışıyor fakat bir şey sormak istiyorum. Eğer ki kullanıcı ismini "ksöz" yaparsa paket gönderiyor fakat "ksöz1" yaptığı zaman fail paket göndermiyor veya "ksözsf a" bunun hakkında yardımcı olabilir misiniz?
Kod:
           if self.username not in self.bannednames['bannedusernames']:

             database işlemleri.

            else:

              AvatarNameChangeFailedMessage(self.client, self.player).send()
 
Herkese merhaba. Uzatmadan geçeyim ben Python ile oyun sunucusu yapıyorum ve isim engellemesi yapmak istiyorum. Engelleme mantığı şöyle JSON dosyası içerisinden kötü bir söz alacak mesela "ksöz" ve eğer kullanıcı isminin içerisindeyse fail paketi gönderiyor. Evet yaptığım sistem çalışıyor fakat bir şey sormak istiyorum. Eğer ki kullanıcı ismini "ksöz" yaparsa paket gönderiyor fakat "ksöz1" yaptığı zaman fail paket göndermiyor veya "ksözsf a" bunun hakkında yardımcı olabilir misiniz?
Kod:
           if self.username not in self.bannednames['bannedusernames']:

             database işlemleri.

            else:

              AvatarNameChangeFailedMessage(self.client, self.player).send()
Kullanıcının isminin kötü sözlerin içinde olup olmamasını değil kullanıcının isminin içinde kötü söz olup olmadığını kontrol etmeniz gerekiyor.

Şu şekilde yapmayı deneyebilirsiniz:
Python:
if 'ksöz' not in self.username:
  #database işlemleri.
else:
  AvatarNameChangeFailedMessage(self.client, self.player).send()

Eğer birçok kelimeyi kontrol etmek istiyorsanız basit bir for döngüsüyle halledilebilir.

Örneğin:
Python:
banned = ['ksöz', 'ksöz2']
isBad = True

for soz in banned:
    if soz in self.username:
        isBad = True

if isBad == True:
     AvatarNameChangeFailedMessage(self.client, self.player).send()
else:
    #databases
 
Son düzenleme:
Kullanıcının isminin kötü sözlerin içinde olup olmamasını değil kullanıcının isminin içinde kötü söz olup olmadığını kontrol etmeniz gerekiyor.

Şu şekilde yapmayı deneyebilirsiniz:
Python:
if 'ksöz' not in self.username:
  #database işlemleri.
else:
  AvatarNameChangeFailedMessage(self.client, self.player).send()

Eğer birçok kelimeyi kontrol etmek istiyorsanız basit bir for döngüsüyle halledilebilir.

Örneğin:
Python:
banned = ['ksöz', 'ksöz2']
isBad = True

for soz in banned:
    if soz in self.username:
        isBad = True

if isBad == True:
     AvatarNameChangeFailedMessage(self.client, self.player).send()
else:
    #databases
if self.bannednames['bannedusernames'] not in self.username:
TypeError: 'in <string>' requires string as left operand, not list
Öyle yapamıyorum hata alıyorum dün araştırdım fakat bulamadım çözüm.
 
if self.bannednames['bannedusernames'] not in self.username:
TypeError: 'in <string>' requires string as left operand, not list
Öyle yapamıyorum hata alıyorum dün araştırdım fakat bulamadım çözüm.
Şu şekilde dener misiniz?
Kod:
banned = ['ksöz', 'ksöz2']
isBad = True

for soz in banned:
    if self.username.count('soz') > 0:
        isBad = True

if isBad == True:
     AvatarNameChangeFailedMessage(self.client, self.player).send()
else:
    #databases
 
Şu şekilde dener misiniz?
Kod:
banned = ['ksöz', 'ksöz2']
isBad = True.

for soz in banned:
 if self.username.count('soz') > 0:
 isBad = True.

if isBad == True:
 AvatarNameChangeFailedMessage(self.client, self.player).send()
else:
 #databases

Olmadı gibi kodu fazla karmaşık yapmadan başka yöntemlerle engellemeye çalışacağım yeniden teşekkürler.
 
"ksöz1" yaptığı zaman fail paket göndermiyor veya "ksözsf a" bunun hakkında yardımcı olabilir misiniz?
Belirlenen kötü kelimeyi split ile bölüp öyle işlem yapın. Eğer belirlenen söz split edilip oluşan listedeki eleman sayısı 1 den büyük ise bu kelime vardır ve engellenir yoksa devam edilir.
Örnek kod;
Python:
k_adı = "ksözsf a"
bölündü = k_adı.split("ksöz")
if len(bölündü) > 1:
    print("yasaklı kelime geçiyor")
else:
    print("yasaklı kelime yok")
>>>yasaklı kelime geçiyor
 
Son düzenleme:

Yeni konular

Yeni mesajlar

Geri
Yukarı