Wer als letztes antwortet kriegt viel mehr als nur 128 Dias

Anscheinend.
Leider sind die Regeln da nicht klar definiert, unsere Skripte sind ja nur (inoffizielle) Implementationen. Zu schade, dass @IceCubiee nicht mehr da ist.
Wie wäre es mit einer regelgebenden Versammlung? Zu schade, dass der Startpost nicht mehr geändert werden kann.
 
So kann man das auch sehen. Für Statistiken, die mit Skript erstellt werden, ist es aber ehre unpraktisch.
Übrigens sind es strenggenommen vier.
 
Er hat doch schon wieder Schule.

Mindestens 5 Wörter:
Ein Wort ([vɔrt]; Plural: Wörter [ʼvœrtɐ]; von althochdeutsch wort „feierlich Gesprochenes“) ist eine selbständige sprachliche Einheit. In der natürlichen Sprache besitzt es – im Gegensatz zu einem Laut oder einer Silbe – eine eigenständige Bedeutung.

Eine allgemein akzeptierte Definition existiert nicht und gilt auch als schwierig, da der Begriff bzw. das Konzept „Wort“ lexikalisch mehrdeutig bzw. (konkreter) vage ist und sowohl vom Untersuchungsgesichtspunkt und von der jeweils interessierenden sprachlichen Ebene abhängt als auch von den diesbezüglichen Theorien. Ob „Wort“ in der Sprachwissenschaft überhaupt eine brauchbare Kategorie ist, ist umstritten. So stellte Ferdinand de Saussure den Begriff „Wort“ völlig zurück und sprach stattdessen schlicht vom „Zeichen“.[1] Mit einem Wort ist mitunter auch eine Abstraktion von der konkreten Wortform gemeint („Baum“ und „Bäume“ als Formen ein und desselben Wortes), solche Vorstellungen erfahren in der Semantik unter dem Begriff des Lexems präzisere Beschreibungen.

Das „Wort“ wird begrifflich vom Phonem, vom Morphem, dem Syntagma sowie dem Satz abgegrenzt. Allerdings kann tatsächlich auch ein einziges Wort einen Satz bilden, genauso wie ein Wort aus nur einem einzigen Morphem und dieses wiederum aus nur einem einzigen Phonem bestehen kann. Ein Beispiel ist die lateinische Form ī „geh!“ (der Imperativ zum Verb ire „gehen“).
- Wikipedia
Also da muss man glaube ich nicht viel machen. Man könnte natürlich prüfen, ob ein Wort, das aus str.split oder re.split hervorgeht, auch Buchstaben enthält. Allerdings, kann es ja auch Namen geben, die nur aus Zahlen und Zeichen bestehen.

Keine 100% Sinnfreien Posts: So etwas kennen wir gar nicht.

Erste Buchstabe des ersten Worts groß: Da es keine Definition für Wort gibt müssen wir wohl nach dem ersten Buchstaben suchen. Das ist nicht optimal mit Namen, steht so aber in den Regeln.
Definition Buchstabe:
Ein Buchstabe ist ein Schriftzeichen, das in einer Alphabetschrift verwendet wird. Die Gesamtheit der Buchstaben einer Phonem-basierten Schriftsprache ergibt ein Alphabet, wobei die Laute (Phoneme) in Gestalt von Zeichen (Graphemen) fixiert werden. In vielen Schriften werden Großbuchstaben (Majuskeln) und Kleinbuchstaben (Minuskeln) unterschieden.
- Wikipedia

Definition Alphabetschrift:
Als alphabetische Schrift oder Buchstabenschrift bezeichnet man eine Schrift, der die Phoneme (Laute) einer Sprache als diskrete Zeicheneinheiten zugrunde liegen. Diese Einheiten – meist handelt es sich um etwa 20 bis 40 verschiedene Zeichen – werden als Buchstaben bezeichnet. Sie haben keine inhaltliche Bedeutung und lassen sich in ihrer Gesamtheit in einem Alphabet zusammenfassen.

Jede alphabetische Schrift ist eine phonographische Schrift, deren Prinzip am strengsten von der Lautschrift vertreten wird: Ein Zeichen bezeichnet einen Sprachlaut. Den Gegensatz dazu bilden die Silbenschriften, die auf visualisierten Silben (Lautkombinationen) basieren, und die logographischen Schriften, die Zeichen für semantische Einheiten (Wörter, Begriffe, „Ideen“) kennen.
- Wikipedia

Es wird sich nicht auf eine Alphabetschrift festgelegt, daher muss wohl jeder "Buchstabe" jedes Alphabets durchgehen. Das \w bei Regexps beinhaltet nur A-Za-z_. Im Locale Modus noch Umlaute, aber keine Zeichen aus anderen Sprachen (kommt hier ja schon mal vor).

Satzzeichen oder Smiley am Ende:
Satzzeichen sind Sonderzeichen einer Schrift, die der Strukturierung und auch der Sinngebung des Satzbaus dienen. Die Setzung der Satzzeichen wird Zeichensetzung oder Interpunktion genannt.

Nicht dazu gehören Buchstaben und Ziffern sowie informationstragende Sonderzeichen (Währungszeichen, mathematische Symbole usw.) sowie – nach einigen Autoren – Wortzeichen. Hier werden letztere mitbehandelt. Im Falle der Unterscheidung fasst man Satz- und Wortzeichen als Interpunktionszeichen zusammen, siehe dort.
- Wikipedia
Hier wird es interessant. Unser aktuelles string.punctuation enthält nämlich auch Währungszeichen ($) und evtl. andere nicht Satzzeichen. Hier könnte man die obige Tabelle übernehmen.

Definition Smiley:
Der Wikipedia Artikel schließt wenig aus, allerding zählen Kaomojis oder auch Dinge wie :D denke ich nicht dazu. Hier ist eine Liste mit Unicode Emojis, die zu viele Bilder enthält als dass ich sie mir ansehen kann:

Edit zu Satzzeichen:

Im Deutschen verwendete Satzzeichen​


Die am häufigsten verwendeten Satzzeichen, in deutschen Texten, sind im Kasten am rechten Rand aufgelistet. In anderssprachigen Texten gibt es zum Teil andere Satzzeichen, oder sie werden anders verwendet.

Beispiel: In englischen Texten zeigt der Apostroph – zusammen mit einem „s“ – oft den Genitiv an (Beispiel: Miller’s garden). Diese Anwendung findet sich heute oft auch in vom Standard abweichenden deutschen Texten.


  • Der Punkt (.) steht am Ende eines Aussagesatzes. Er kann auch zur Gliederung von Tausender-Zahlen (1.000.000) oder zur Kennzeichnung von Abkürzungen (usw.) verwendet werden, dient aber in diesen Fällen nicht als Satzzeichen.
  • Das Fragezeichen (?) steht am Ende einer Frage.
  • Das Ausrufezeichen (!) oder Rufzeichen steht am Ende eines Ausrufesatzes, eines wichtigen, zu betonenden Satzes oder einer Aufforderung bzw. einem Befehl.
  • Das Anführungszeichen ( und bzw. » und «, handschriftlich und im Schreibmaschinensatz auch das Schreibmaschinenanführungszeichen ") steht am Anfang und am Ende einer wörtlichen Rede. Es kann auch benutzt werden, um einen Begriff, ein Zitat oder eine Phrase in einschränkender Weise darzustellen.
  • Das Komma (,), auch Beistrich genannt, früher Virgel, steht zwischen Teil- oder Gliedsätzen; dabei kann es sich um Haupt- oder Nebensätze handeln. Außerdem trennt es vorangestellte, eingeschobene oder nachgestellte Wörter oder Wortgruppen vom Kernsatz ab und gliedert die Teile einer Aufzählung, wenn diese nicht durch „und“ oder „oder“ verbunden sind. Unabhängig von seiner Funktion als Satzzeichen kann es auch als Trennzeichen für Dezimalzahlen (3,14) verwendet werden.
  • Das Semikolon (;) oder der Strichpunkt trennt zwei zusammengehörige Sätze.
  • Der Doppelpunkt (:) oder das Kolon beendet einen Satz und lässt gleichzeitig eine wörtliche Rede, ein Zitat, eine Aufzählung oder einen erklärenden Text beginnen.
  • Das Leerzeichen ( ) steht zwischen zwei Wörtern und nach verschiedenen Satzzeichen wie Punkt oder Komma.
  • Der Bindestrich oder Trennstrich wird zur Trennung eines Wortes beim Zeilenumbruch oder zur Bildung zusammengesetzter Wörter verwendet.
  • Der Apostroph () ist ein Auslassungszeichen.
  • Der Gedankenstrich (), oder auch Halbgeviertstrich, auch als Bis-Strich und Streckenstrich verwendet, klammert einen eingeschobenen Gedanken. Das typographisch richtige Minuszeichen entspricht nicht dem Gedankenstrich. Er ist unter Windows mit der Tastenkombination [Alt] + „0150“ aufzurufen, auf dem Macintosh mit der Tastenkombination [Wahltaste] + [-], und mit der Neo-Tastaturbelegung mittels [Umschalttaste] + [Komma].
  • Der Geviertstrich (—), auch Spiegelstrich, steht zu Beginn von Aufzählungen als Anstrich. Er ist unter Windows mit der Tastenkombination [Alt] + „0151“ aufzurufen, auf dem Macintosh mit der Tastenkombination [Umschalttaste] + [Wahltaste] + [-], und mit der Neo-Tastaturbelegung mittels [Umschalttaste] + [-].
  • Der Hochpunkt (·) dient im Griechischen als Semikolon; im Deutschen als typografisches Element zwischen gleichrangigen Wörtern, die ohne zusammenhängenden Satz aufscheinen (meistens wird stattdessen der Mittelpunkt verwendet).
  • Schrägstrich (/)
  • Klammern ((, ), [, ], <, >, {, })
  • Auslassungspunkte ()

Andere Satzzeichen​


  • Das Symbol eines Zeigefingers () wurde bis ins 18. Jahrhundert als Satzzeichen verwendet, siehe Index (Satzzeichen)
  • Das Interrobang () vereinigt die Funktionen eines Frage- und eines Ausrufezeichens
  • Im Spanischen werden Sätze, die mit einem Ausrufe- bzw. Fragezeichen oder einem Interrobang abgeschlossen werden, mit einem umgekehrten Ausrufezeichen (¡, signo de exclamación invertido) bzw. einem umgekehrten Fragezeichen (¿, signo de interrogación invertido) oder einem Gnaborretni () eingeleitet.
  • Das Aufzählungskomma () wird in der chinesischen Schrift verwendet.
Vielleicht ist das eine bessere Liste.
 
Zuletzt bearbeitet:
Ups, vergessen. Ich hab noch zwei Wochen Ferien.
Wobei das die Frage nicht beantwortet. Wenn ich Schule habe, schwanke ich unregelmäßig zwischen den ersteren beiden gleichzeitig oder dem letzteren hin und her. Und momentan bin ich seit so etwa 25½ Stunden wach, verspüre kaum Müdigkeit und plane, in so etwa vierzehn Stunden zu einschlafen. Mein Schlafrhythmus ist kein Rhythmus, es sind die Nachkommastellen von √2.
 
Hast du dir meinen Edit schon angesehen?

Als ich das letzte Mal >24 Stunden wach war bin ich um 12 Uhr Mittags auf dem Boden eingeschlafen...
 
Ich hab hier mal ein Json Paste mit so ziemlich allen Unicoide emojis, aus der Python emoji lib. Hier gibt es sie auch als dict.

Allerdings sieht es so aus als könnte man hier gar keine Emojis schreiben, oder? Astrokatze: ‍ Normale Katze: . Nichts!

Edit: Diese Art von unicode emojis geht tatsächlich: ☺. Die stehen aber in der Liste drin:
Python:
>>> "☺" in emojis
True  # .
 
Zuletzt bearbeitet:
Ist auch ein anderer Unicode-Block. Aber ja, es ist eigentlich angedacht, dass man die eigenen Emojis benutzt und keine Unicode-Emojis. Ist mir schon früher aufgefallen, als ich eine Teetasse einfügen wollte.
 
Hab jetzt mal eine Funktion geschrieben, die das besser machen sollte:
Python:
import regex as re
from .emojis import is_emoji  # Makes use of https://pypi.org/project/emoji/


# Source: https://de.m.wikipedia.org/wiki/Satzzeichen
PUNCTUATION = r".?!\"„“‚‘»«‹›,;:'’–—‐\-·/\()\[\]<>{}…☞‽¡¿⸘、"


def rules_reworked(content: str) -> dict[str, bool]:
    content = content.strip()  # Remove trailing and leading whitespaces
    compliance = {
        "word_count": True,
        "first_letter": True,
        "punctuation": True,
    }
    if not content:
        return {
            k: False for k in compliance.keys()
        }
    # Word count
    # Using re.split() instead of str.split() as re supports all whitespaces
    # out of the box.
    word_count = len(re.split(
        fr"[\s{PUNCTUATION}]",  # Split words by whitespace and punctuation
        content,
    ))
    if word_count < 5:
        compliance["word_count"] = False
    # First Letter
    # Get index of first letter
    # This requires the third party regex module to work
    # Therefore `import regex as re`
    # This works with all Unicode letters, including äöü, ß and âáà.
    first_letter_match = re.search('\\p{L}', content, re.UNICODE)
    if (
        first_letter_match is None  # No letter in content
        or not first_letter_match.captures()[0].isupper()  # noqa  # letter not uppercase
    ):
        compliance["first_letter"] = False
    # Punctuation
    # Last forum emoji has already been replaced with a dot
    last_char = content[-1]
    if (
        last_char not in PUNCTUATION
        and not is_emoji(last_char)  # noqa
    ):
        compliance["punctuation"] = False
    return compliance

Hier sind ein paar Tests:
Python:
>>> from uw_stats.stats import scraper
>>> rw = scraper.rules_reworked
>>> rw("Hi")
{'word_count': False, 'first_letter': True, 'punctuation': False}
>>> rw("Hi.")
{'word_count': False, 'first_letter': True, 'punctuation': True}
>>> rw("Hi ich bin Cer GPT.")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Hi.ich.bin.Cer.GPT.")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Hi.ich.bin.Cer.GPT☺")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("hi.ich.bin.Cer.GPT☺")
{'word_count': True, 'first_letter': False, 'punctuation': True}
>>> rw("Das hier ist ein sehr, sehr, sehr langer text ohne einem Punkt am Ende")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter,")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter;")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter:")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter>")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter)")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter!")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter$$$")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter-")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter_")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter/")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter\\")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter^")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter°")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter#")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter'")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Hier ist ein Zitat: „Das Wetter ist schlecht.“")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Hier ist ein Zitat: »Das Wetter ist schlecht.«")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Ü <- Hier ein Umlaut als erster Buchstabe")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("ß <- sz hat keine große Version")
{'word_count': True, 'first_letter': False, 'punctuation': False}
>>> rw("Ô <- ein besonderes großes o.")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("")
{'word_count': False, 'first_letter': False, 'punctuation': False}

Sieht soweit ganz gut aus, oder?

Edit: Fehler bei leerem content behoben, hier ist noch die is_emoji() Funktion:
Python:
import emoji

EMOJI_LIST = list(emoji.EMOJI_DATA.keys())


def is_emoji(string: str) -> bool:
    try:
        return string in EMOJI_LIST
    except IndexError:  # Empty string
        return False #.
 
Zuletzt bearbeitet:
So wie es aussieht wird er von meiner Funktion erkannt, trotzdem sehr seltsam... Einige andere wie der Schädel gehen auch, so halbwegs... ☠

Edit: Bei der Gesamtstatistik, bei der nach den wenigsten % ungültigen sortiert wird erkennt man schon deutlich, dass zu oft am Verhalten, dass Zeichen wie * oder ^ als Satzzeichen zählen festgehalten wird. Allein bei mir sind 47 ungültige Beiträge dazu gekommen.
 
Zuletzt bearbeitet:
@Cer66 ich denke mit Dinge wie :D meinst du Emoticons, wobei auch die nicht klar abgegrenzt sind (wie alles aus der Umgangssprache). Ich fürchte um das zu wissen, muss an aus dem letzten Jahrtausend stammen und/oder smart-lose Handys besessen haben. :D
 
Du hast Recht. Sollen die jetzt also aufgenommen werden oder eher nicht? Manche wie :) :D :o werden ja schon vom Forum umgewandelt.
SpielerAnzahl BeiträgeAnzahl nicht regelkonformer BeiträgeProzentanzahl nicht regelkonformer Beiträge
PiusG6822.941176470588235%
Cer6626371064.019719378081152%
maua124221315.408753096614368%
crafter_01012986.2015503875969%
tuxrandom725466.344827586206897%
fscript25721676.493001555209954%
Sparktr411276.569343065693431%
MagicBookworm63731679.165526675786593%
Lonely_Wolf21501510.0%
Dakota751241310.483870967741936%
Gingernils3323510.542168674698797%
JF_kein_K6547511.46788990825688%
Live_Is_Live50612.0%
ttolkin2853712.982456140350877%
Dragonly4469913.043478260869565%
derschneck_2854114.385964912280702%
Atlasfreak4206114.523809523809526%
Steinsamurai2794917.562724014336915%
Groundcrafter571221.052631578947366%
Vani2252711221.25237191650854%
ChaosQueen__1222722.131147540983605%
Hase_222681623.52941176470588%
EinSev631726.984126984126984%
untergrund11173429.059829059829063%
Yazinda1594729.559748427672954%
Soldwyn1786335.39325842696629%
paulisttot50019839.6%
Olke1174841.02564102564102%
Silva_VE33213941.86746987951807%
Pokethestupid733345.20547945205479%
Theodorianum502346.0%
Fredie1104583865.51724137931035%
.
 
Zuletzt bearbeitet:
Hab jetzt mal eine Funktion geschrieben, die das besser machen sollte:
Python:
import regex as re
from .emojis import is_emoji  # Makes use of https://pypi.org/project/emoji/


# Source: https://de.m.wikipedia.org/wiki/Satzzeichen
PUNCTUATION = r".?!\"„“‚‘»«‹›,;:'’–—‐\-·/\()\[\]<>{}…☞‽¡¿⸘、"


def rules_reworked(content: str) -> dict[str, bool]:
    content = content.strip()  # Remove trailing and leading whitespaces
    compliance = {
        "word_count": True,
        "first_letter": True,
        "punctuation": True,
    }
    if not content:
        return {
            k: False for k in compliance.keys()
        }
    # Word count
    # Using re.split() instead of str.split() as re supports all whitespaces
    # out of the box.
    word_count = len(re.split(
        fr"[\s{PUNCTUATION}]",  # Split words by whitespace and punctuation
        content,
    ))
    if word_count < 5:
        compliance["word_count"] = False
    # First Letter
    # Get index of first letter
    # This requires the third party regex module to work
    # Therefore `import regex as re`
    # This works with all Unicode letters, including äöü, ß and âáà.
    first_letter_match = re.search('\\p{L}', content, re.UNICODE)
    if (
        first_letter_match is None  # No letter in content
        or not first_letter_match.captures()[0].isupper()  # noqa  # letter not uppercase
    ):
        compliance["first_letter"] = False
    # Punctuation
    # Last forum emoji has already been replaced with a dot
    last_char = content[-1]
    if (
        last_char not in PUNCTUATION
        and not is_emoji(last_char)  # noqa
    ):
        compliance["punctuation"] = False
    return compliance

Hier sind ein paar Tests:
Python:
>>> from uw_stats.stats import scraper
>>> rw = scraper.rules_reworked
>>> rw("Hi")
{'word_count': False, 'first_letter': True, 'punctuation': False}
>>> rw("Hi.")
{'word_count': False, 'first_letter': True, 'punctuation': True}
>>> rw("Hi ich bin Cer GPT.")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Hi.ich.bin.Cer.GPT.")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Hi.ich.bin.Cer.GPT☺")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("hi.ich.bin.Cer.GPT☺")
{'word_count': True, 'first_letter': False, 'punctuation': True}
>>> rw("Das hier ist ein sehr, sehr, sehr langer text ohne einem Punkt am Ende")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter,")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter;")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter:")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter>")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter)")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter!")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter$$$")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter-")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter_")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter/")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter\\")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Das sind fünf ganze Wörter^")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter°")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter#")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("Das sind fünf ganze Wörter'")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Hier ist ein Zitat: „Das Wetter ist schlecht.“")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Hier ist ein Zitat: »Das Wetter ist schlecht.«")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("Ü <- Hier ein Umlaut als erster Buchstabe")
{'word_count': True, 'first_letter': True, 'punctuation': False}
>>> rw("ß <- sz hat keine große Version")
{'word_count': True, 'first_letter': False, 'punctuation': False}
>>> rw("Ô <- ein besonderes großes o.")
{'word_count': True, 'first_letter': True, 'punctuation': True}
>>> rw("")
{'word_count': False, 'first_letter': False, 'punctuation': False}

Sieht soweit ganz gut aus, oder?

Edit: Fehler bei leerem content behoben, hier ist noch die is_emoji() Funktion:
Python:
import emoji

EMOJI_LIST = list(emoji.EMOJI_DATA.keys())


def is_emoji(string: str) -> bool:
    try:
        return string in EMOJI_LIST
    except IndexError:  # Empty string
        return False
Bitte kein return in einem try. D:

Python:
import emoji

EMOJI_LIST = list(emoji.EMOJI_DATA.keys())


def is_emoji(string: str) -> bool:
    try:
        out = string in EMOJI_LIST
    except IndexError:  # Empty string
        return False
    return out

Besser. Was für eine String übergibst du? Wie kann diese empty sein?


Die Satzzeichen würde ich entweder extrem eng fassen (.!?) und dann aber vorher Klammern, Anführungszeichen und Sternchen heraus filtern, oder sehr weit fassen .;:!"()[]{}?„“”»«*…–›‹‚‘ und vermutlich noch mehr...
 
Zuletzt bearbeitet:
Die Satzzeichen sind ja über der Funktion als Konstante:
PUNCTUATION = r".?!\"„“‚‘»«‹›,;:'’–—‐\-·/\()\[\]<>{}…☞‽¡¿⸘、"

Warum kein return im try? Das macht doch nur etwas aus, wenn ein else block dabei ist.

Der string kann in diesem Kontext nicht leer sein, allerdings ist das ja eine eigenständige Funktion die auch in einem Kontext mit möglicherweise leerem String aufgerufen werden kann. Ein leerer string ist kein Emoji, also warum Fehler werfen?

Edit: Wenn du es dir noch genauer ansehen willst, meinen GitHub hast du ja.
 
Warum kein return im try? Das macht doch nur etwas aus, wenn ein else block dabei ist.
Weil im try so wenig Code wie möglich stehen sollte.

PEP8 schrieb:
Additionally, for all try/except clauses, limit the try clause to the absolute minimum amount of code necessary. Again, this avoids masking bugs.

In deinem Fall, sollte das keine Probleme machen... Aber nicht nur ein else kann Probleme machen:

Python:
def foo():
    try:
        return True
    finally:
        return False

Was ist das Ergebnis? Was sollte das Ergebnis sein?
 

Benutzer, die dieses Thema gerade lesen

ONLINE 37 Spieler