Heim  >  Artikel  >  Backend-Entwicklung  >  Ausführliche Erläuterung des Prinzips der Blockierung von Schimpfwörtern in den wichtigsten Chat-Systemen von Python

Ausführliche Erläuterung des Prinzips der Blockierung von Schimpfwörtern in den wichtigsten Chat-Systemen von Python

WBOY
WBOYOriginal
2016-12-05 13:27:171740Durchsuche

Plötzlich fiel mir ein Video ein, in dem die Flut harmonisch mit *-Zeichen gefüllt war. Dann wollte ich versuchen, in Python zu schreiben, und es hat tatsächlich funktioniert Muss ein Lager haben, in dem Schimpfwörter gespeichert sind, ist zu gegebener Zeit leicht zu erkennen. Ich persönlich verwende immer noch gerne eine Liste, da die Liste einfach zu verwenden und flexibel zu erweitern ist. Wir überlegen, wie Um Schimpfwörter im Kern zu blockieren, müssen Sie bedenken, dass der vom Spieler eingegebene Sperrdatentyp die erste Datei ist, gefolgt von Zeichenfolgen. Wenn es keine besonderen Anforderungen gibt, sind dies immer der Fall Es ist viel einfacher, das *-Zeichen durch Zeichenfolgen zu ersetzen, oder? Worüber wir heute sprechen, ist die Vollständigkeit. Damit es jeder klarer lernt, werde ich den Code aufteilen und ihn dann zusammenstellen, um darüber zu sprechen Damit jeder ein tieferes Verständnis hat, werfen wir zunächst einen Blick auf die Kernfunktionen, um den Schimpfwortcode wie folgt zu ersetzen:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

import datetime
time = datetime.datetime.now()

speak = '你个狗日的,fuckR你妈哟,操你个仙人板板,个老麻批'
dirty = ['fuck','狗日的','犊子','麻批','仙人板板','R你妈','操你','草你']

for i in dirty:
  speak = speak.replace(i,'*')
print speak+" | "+str(time)

Ist es nicht einfach und einfach, die Schimpfwörter zu blockieren? Dadurch wird das Zeitmodul datetime importiert, um die aktuelle Ortszeit zu erhalten, die später zum Schreiben und Speichern des Protokolls verwendet wird die aktuelle Zeit. Dann ist speak das Schimpfwort, das der Spieler ausgeben möchte (jetzt ist es eine Demonstration und wird später in die echte Eingabeinteraktion von Input geändert), dirty ist die definierte Schimpfwortbibliothek (natürlich habe ich das nicht getan). Schreiben Sie zu viele, da jede Region anders ist und es zu viele gibt, um sie zu beenden. Anschließend wird eine for-Schleife verwendet, um zu suchen. Solange das, was Sie sagen, Schimpfwörter enthält, werden wir sie durch Ersetzen ersetzen Die auf dem öffentlichen Bildschirm angezeigten Untertitel sind alle *... Natürlich müssen wir noch darüber nachdenken, wie wir das tun können. Um zu verfolgen, wer was zu welcher Zeit gesagt hat, müssen wir auf jeden Fall Zweifel daran haben Warum Klassen verwendet werden: Erstens ist Klasse eine Beschreibung von Dingen eines Typs (z. B. Tische, quadratische Tische, runde Tische, Konferenztische, Bürotische usw.). Verallgemeinerung, zum Beispiel eine Gruppe von Spielern. Sie alle haben eigene Spielnamen und alle verfügen über Chat-Funktionen (wir nennen sie auch Aktionen), sodass sie klassifiziert und unterschieden werden können. Der Code lautet wie folgt:

class Player(object):

  def __init__(self,name):
    self.name = name

  def talk(self):
    self.string = 'whatever fuck no joke'
    self.log()
    self.string = self.string.replace('fuck','雅蠛蝶')
    print "公屏显示:%s--%s"%(self.name,self.string) 

  def log(self):
    print "日志记录为:%s--%s"%(self.name,self.string)

t1 = Player('white')
t1.talk()

Hier finden Sie eine umfassende Einführung in die Verwendung von Klassen und Workflow-Effekten. Hier erstellen wir zunächst eine Player-Klasse und initialisieren sie mit ihrem Namen. Darunter verfügt er über die Chat-Funktion talk und die Protokollierungsfunktion, also lasst uns chatten Vorgang: Nachdem sich jeder Spieler nach der Registrierung beim Spiel angemeldet hat, erhält er einen Spielnamen (Sie können ihn so verstehen, als würden Sie sich bei QQ anmelden. Hier entspricht self.name=name dem Erhalten Ihres persönlichen Namens (Bildschirmnamen). , und öffnen Sie dann das Chat-Fenster, um die von Ihnen eingegebenen Chat-Informationen einzugeben. self.log zeichnet das Protokoll auf. Der Schwerpunkt liegt darin, zuerst Ihre ursprünglichen Wörter im Chat-Protokoll aufzuzeichnen, damit Ihre Aufzeichnungen gefunden werden können. string.replace ersetzt die Schimpfwörter, die Sie gesagt haben, dann werden nur die ersetzten Wörter auf dem Bildschirm angezeigt. Was zum Beispiel gedruckt wurde, wurde ursprünglich von Ya Zhudie programmiert ... Ist dieser Workflow natürlich sehr klar, wenn Sie es nicht tun? Wenn Sie die Unterrichtsmethode nicht verstehen, wird es sehr verwirrend sein. Solange Sie diese Idee haben und den Unterricht lernen, wird es sehr einfach sein. Natürlich wird es nicht so enden. Schließlich wird der grundlegende vollständige Code wie folgt veröffentlicht:

import datetime

time = str(datetime.datetime.now())[:-7]

dirty = ['fuck','狗日的','犊子','麻批','仙人板板','R你妈','操你','草你']

class Player(object):

  def __init__(self,name):
    self.name = name

  def talk(self):
    self.string = raw_input("input-write:")
    # self.string = '你个狗日的,R你妈哟,操你个仙人板板,个老麻批'
    self.log()
    for i in dirty:
      self.string = self.string.replace(i,'雅蠛蝶')
    print "{} {}-speak:{}".format(time,self.name,self.string,)

  def log(self):
    with open('zanghua.txt','a') as f:
      f.write("{} {}-speak:{}\n".format(time,self.name,self.string))


t1 = Player('white')
t2 = Player('black')
t3 = Player('green')
while True:
  n = raw_input('change Player:')
  if n == '1':
    t1.talk()
  elif n == '2':
    t2.talk()
  elif n == '3':
    t3.talk()
  elif n == 'q':
    print 'Bye'
    break
  else:
    print "尼玛在逗我?"

Die Testergebnisse lauten wie folgt:

Sie können eine neue Datei mit dem Namen zanghua.txt mit leerem Text erstellen. Sie wird nur verwendet, um den Verhaltenseffekt des Speicherns von Protokollen zu demonstrieren. Der obige Ausdruck besagt, dass Change Player tatsächlich ein einfacher Schalter ist, um verschiedene Benutzereingaben zu demonstrieren. Sie melden sich beim System an und wechseln nur selten den Benutzer. Der Code hier fügt die Dateiverarbeitungsmethode mit der Bezeichnung „f“ hinzu. und schreibt dann write (denken Sie daran, am Ende des Schreibens n Zeilenumbrüche hinzuzufügen, sonst wird es schwierig, die erste Zeile zu lesen.) In Bezug auf das Slicing von datetime[:7] ist es prägnanter, den Rest nach der Zeit beim Drucken oben zu ignorieren. Der grundlegende Prozess ist wie folgt. Natürlich kann es viele Erweiterungen geben, z. B. das Sprechen nach einer bestimmten Anzahl von Schimpfwörtern verbieten, das Sprechen auf wenige Minuten beschränken, Protokolle können regelmäßig gelöscht werden usw. Es liegt an Ihnen, es selbst zu recherchieren. Die Menge an Code ist etwas groß und ich werde sie hier nicht zeigen.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich sein wird. Ich hoffe auch, dass jeder Script House unterstützt.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn