Python: Replace Emoji Codes mit Emoji?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Also nehmen wir mal an, du hast eine Smiley-Datenbank in Form einer Textdatei, mit folgendem Inhalt:

😀 smiley
😁 happy
😇 angel
😈 devil
😞 sad
😠 angry
😮 oh
😱 munch
😴 sleep

(Ich weiß, es gibt noch viel mehr, aber das soll jetzt nur ein Beispiel sein!)

Dann kannst du mit folgendem Codeschnipsel Smileys durch Textrepräsentation und umgekehrt in einem Text ersetzen:

import codecs

smiley_text = {}
text_smiley = {}

with codecs.open('smileys.txt', 'r', 'utf-8', 'strict') as fh:
	for line in fh:
		if ' ' not in line:
			continue

		smiley, text = line.strip().split(' ', 1)
		text = ':%s:' % text

		smiley_text[smiley] = text
		text_smiley[text] = smiley

message = '''
Das ist das Haus, vom Nikolaus. :happy:
Und das nebenan, vom Weihnachtsmann. :smiley:
'''.strip()

print('ORIGINAL:\n%s' % message)

for text, smiley in text_smiley.items():
	if text in message:
		message = message.replace(text, smiley)

print('REPLACE A:\n%s' % message)

for smiley, text in smiley_text.items():
	if smiley in message:
		message = message.replace(smiley, text)

print('REPLACE B:\n%s' % message)

Damit erhältst du folgende Ausgabe:

ORIGINAL:
Das ist das Haus, vom Nikolaus. :happy:
Und das nebenan, vom Weihnachtsmann. :smiley:

REPLACE A:
Das ist das Haus, vom Nikolaus. 😁
Und das nebenan, vom Weihnachtsmann. 😀

REPLACE B:
Das ist das Haus, vom Nikolaus. :happy:
Und das nebenan, vom Weihnachtsmann. :smiley:

Wie du siehst, funktioniert die Ersetzung damit recht einfach. Die entsprechende Funktionalität musst du dir natürlich noch selber in eine Klasse oder schicke Funktionen verpacken, aber so siehst du erst mal, wie das im Großen und Ganzen funktioniert.

Disclaimer: Ich weiß, dass der Code nicht allzu optimal ist, aber da er möglichst auch für Anfänger ohne große Vorkenntnisse verständlich sein soll, will ich jetzt nicht übertreiben.

Aus Effizienzgründen würde ich normalerweise mit einem Iterator über "message" gehen, aber das würde den Code deutlich vergrößern.

Woher ich das weiß:eigene Erfahrung

IsHaltNeBeta  03.11.2018, 06:41

PS: Damit du smileys in Textdateien speichern kannst, musst du ein Unicode-Format wählen. Hierzulande ist UTF-8 am geläufigsten.

PPS: Genau genommen kannst du Unicode-Zeichen auch in ASCII-Dateien speichern, aber das funktioniert bei den wenigsten Dateiformaten, da hierfür spezielle Interpretationen nötig sind.

Bei HTML, XML, LaTeX, usw. kann man relativ problemlos alle Zeichen des Unicode-Zeichensatzes speichern und darstellen, obwohl man nur die ASCII-Kodierung nutzt, aber bei den meisten anderen reinen Textdatei-Formaten gibt es dafür leider keine Möglichkeit.

0