Wie wäre es mit einer regelgebenden Versammlung? Zu schade, dass der Startpost nicht mehr geändert werden kann.Leider sind die Regeln da nicht klar definiert, unsere Skripte sind ja nur (inoffizielle) Implementationen. Zu schade, dass @IceCubiee nicht mehr da ist.

- WikipediaEin 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“).
- WikipediaEin 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.
- WikipediaAls 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.
- WikipediaSatzzeichen 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.
: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:
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.
Sehr ordentlich, ich denke, damit wären alle Unklarheiten beseitigt.Hast du dir meinen Edit schon angesehen?
>>> "☺" in emojis
True # .
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
>>> 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}
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 #.
:) :D :o werden ja schon vom Forum umgewandelt.| Spieler | Anzahl Beiträge | Anzahl nicht regelkonformer Beiträge | Prozentanzahl nicht regelkonformer Beiträge |
| PiusG | 68 | 2 | 2.941176470588235% |
| Cer66 | 2637 | 106 | 4.019719378081152% |
| maua1 | 2422 | 131 | 5.408753096614368% |
| crafter_010 | 129 | 8 | 6.2015503875969% |
| tuxrandom | 725 | 46 | 6.344827586206897% |
| fscript | 2572 | 167 | 6.493001555209954% |
| Sparktr | 411 | 27 | 6.569343065693431% |
| MagicBookworm63 | 731 | 67 | 9.165526675786593% |
| Lonely_Wolf2 | 150 | 15 | 10.0% |
| Dakota75 | 124 | 13 | 10.483870967741936% |
| Gingernils | 332 | 35 | 10.542168674698797% |
| JF_kein_K | 654 | 75 | 11.46788990825688% |
| Live_Is_Live | 50 | 6 | 12.0% |
| ttolkin | 285 | 37 | 12.982456140350877% |
| Dragonly44 | 69 | 9 | 13.043478260869565% |
| derschneck_ | 285 | 41 | 14.385964912280702% |
| Atlasfreak | 420 | 61 | 14.523809523809526% |
| Steinsamurai | 279 | 49 | 17.562724014336915% |
| Groundcrafter | 57 | 12 | 21.052631578947366% |
| Vani22 | 527 | 112 | 21.25237191650854% |
| ChaosQueen__ | 122 | 27 | 22.131147540983605% |
| Hase_222 | 68 | 16 | 23.52941176470588% |
| EinSev | 63 | 17 | 26.984126984126984% |
| untergrund1 | 117 | 34 | 29.059829059829063% |
| Yazinda | 159 | 47 | 29.559748427672954% |
| Soldwyn | 178 | 63 | 35.39325842696629% |
| paulisttot | 500 | 198 | 39.6% |
| Olke | 117 | 48 | 41.02564102564102% |
| Silva_VE | 332 | 139 | 41.86746987951807% |
| Pokethestupid | 73 | 33 | 45.20547945205479% |
| Theodorianum | 50 | 23 | 46.0% |
| Fredie1104 | 58 | 38 | 65.51724137931035% |
Bitte keinHab 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
return in einem try. 
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
.;:!"()[]{}?„“”»«*…–›‹‚‘ und vermutlich noch mehr...PUNCTUATION = r".?!\"„“‚‘»«‹›,;:'’–—‐\-·/\()\[\]<>{}…☞‽¡¿⸘、"Weil imWarum kein return im try? Das macht doch nur etwas aus, wenn ein else block dabei ist.
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.
else kann Probleme machen:def foo():
try:
return True
finally:
return False
Wir verwenden unerlässliche Cookies, damit diese Website funktioniert, und optionale Cookies, um dein Erlebnis zu verbessern.