Ich habe eine lange Tabelle unter oo calc. Sie enthält Zeilen wie Ich nehme 4 Eier 50 Leute nahmen teil Das soll konvertiert werden in Ich nehme vier Eier Fünfzig Leute nahmen teil Wie kann ich das in oo calc oder irgendeinem Onlineprogramm schnell automatisch ändern?
In welchem Bereich liegen die Zahlen? Kann eine Textersetzung a la sed (stream editor) vorgenommen werden?
Kann man net dafür einfach die gute alte "Suchen und Ersetzen" Funktion verwenden? 4 -> vier, 50 -> fünfzig?
Die Zahlen in absteigender Reihenfolge abarbeiten. Nicht dass es so rauskommt: Die Hose war eine 501. --> Die Hose war eine fünfzigeins. ## NEIN! Mit folgendem Suchmuster arbeiten: '[^\d]501[^\d]'
Christoph Haus schrieb: > Ich nehme 4 Eier > 50 Leute nahmen teil > > Das soll konvertiert werden in > > Ich nehme vier Eier > Fünfzig Leute nahmen teil Soll das wirklich so? Ich habe mal gelernt, dass Zahlen bis zehn ausgeschrieben werden, größere bleiben als Ziffern stehen.
> Ich habe mal gelernt, dass Zahlen bis zehn ausgeschrieben werden, > größere bleiben als Ziffern stehen. Vor dieser "Regel" warnt der Duden schon seit über 100 Jahren ;-) http://faql.de/typographie.html#zahlen
>Kann man net dafür einfach die gute alte "Suchen und Ersetzen" >Funktion verwenden? Genau das kann sed.exe mit regulären Ausdrücken in einem Script vollautomatisch. Tolles command line tool.
iop schrieb: > Kann man net dafür einfach die gute alte "Suchen und Ersetzen" > Funktion verwenden? > > Genau das kann sed.exe mit regulären Ausdrücken in einem Script > vollautomatisch. > Tolles command line tool. sed.exe? Das wird für die exe-Generation aber sehr schwierig / zumal die bisher kaum was von regular expressions gehört haben
foobar schrieb: >> Ich habe mal gelernt, dass Zahlen bis zehn ausgeschrieben werden, >> größere bleiben als Ziffern stehen. Zahlen bis zwölf. > Vor dieser "Regel" warnt der Duden schon seit über 100 Jahren ;-) Sie wird aber doch erstaunlich häufig penibel befolgt, was besonders dämlich aussieht bei Zahlenbereichen, die im "ausgeschriebenen Bereich" beginnen und im "Ziffernbereich" enden, wie "zwischen acht und 16"... "Vier Jugendliche im Alter zwischen zehn und 15 Jahren haben beim Lotto "sechs aus 49" den Jackpot gewonnen. Nun bekommt jeder drei komma fünf von den 14 Millionen." iop schrieb: >>Kann man net dafür einfach die gute alte "Suchen und Ersetzen" >>Funktion verwenden? > Genau das kann sed.exe mit regulären Ausdrücken in einem Script > vollautomatisch. In oo-Calc-Dateien? Ganz automatisch mit allen Zahlen von - sagen wir mal - Null bis eine Million, also ohne dabei das Schreiben des regulären Ausdrucks zu einer Lebensaufgabe zu machen? Oder was meinst du genau mit "vollautomatisch"? > Tolles command line tool. Das ist es. Aber dass es das kann, glaub ich nicht so ganz.
iop schrieb: > Genau das kann sed.exe mit regulären Ausdrücken in einem Script > vollautomatisch. Wie sieht dieses Skript aus?
Wozu wenns nur ein paar sind? tools -> macro -> record macro, bereich auswaehlen, f3 oder find&replace, ersetzungen durchfuehren, abspeichern
Rolf M. schrieb: > Ganz automatisch mit allen Zahlen von - sagen wir > mal - Null bis eine Million Das gab es zu Zeiten als man Geld-Überweisungen noch real ausgedruckt hat, da stand dann "Einemillionzweihundertsechsundfünzigtausenddreihunderteinund achtzig". Ist wahrscheinlich verlorengegangenes Knowhow, für einen Programmierer aber kein ernsthaftes Problem. Georg
Walter K. schrieb: > Das wird für die exe-Generation aber sehr schwierig / zumal die bisher > kaum was von regular expressions gehört haben sed 's/4/vier/g; s/50/fünfzig/g' <<< 'Ich nehme 4 Eier, 50 Leute ...' Ein script zu machen welches Ersetzungen durchführt ist nicht sonderlich schwierig aber eine Liste der natürlichen Zahlen in Wortform zu generieren durch die das gefundene im Zahlenraum ersetzt wird ist dann schon anspruchsvoller ...
georg schrieb: > Rolf M. schrieb: >> Ganz automatisch mit allen Zahlen von - sagen wir >> mal - Null bis eine Million > > Das gab es zu Zeiten als man Geld-Überweisungen noch real ausgedruckt > hat, da stand dann > "Einemillionzweihundertsechsundfünzigtausenddreihunderteinund achtzig". TTS-Systeme machen sowas auch als Teil des ersten Preprocessing-Schrittes. > Ist wahrscheinlich verlorengegangenes Knowhow, für einen Programmierer > aber kein ernsthaftes Problem. Nein, das sollte recht einfach sein für Sätze wie die obigen Beispiele. Schwieriger wird's dann schon, wenn aus einen 3. ein Dritter werden soll. Dann muss man nämlich auch teilweise die Grammatik des Satzes verstehen.
50 Personen haben achtundzwanzig Eier. Wieviele Personen haben statt dessen Eierstöcke?
es wird wohl auch ein einfaches Suchen/ersetzen hinauslaufen. Die Kunst für dich ist es irgendwie die Wörter für die Zahlen zu bekommen. Da gibt es zum Glück ein paar Regeln die helfen können. von 0-13 ist unregelmäßig und muss Kodiert werden, 14-19 nennt erst denn einer dann den Zehner also vierzehn und ab 20-100 ist "einer + 'und + 'Zehner'", ab Hundert nennt man erst die hundert und dann folgt man den bisherigen Regeln. Das sollte sich Programmieren lassen, oder wenn es nicht lohnt weil es nicht soviel unterschiedliche Zahlen sind kann man mit einer Tabelle arbeiten. Notfalls mit einer einfachen Eingabe dannach könnte man zum Beispiel in Python ein script schreiben was die Zahlen von groß nach klein Konvertiert Hier wäre ein Rumpf wie das ungefähr gehen könnte.
1 | def int2string(string): |
2 | new = string |
3 | numbers = set(re.findall('\d+', string)) |
4 | for num in sorted(numbers, reverse=True): |
5 | name = input('Sage mir wie heist {} :'.format(num)) |
6 | new = new.replace(num, name.strip()) |
7 | return ne |
Wenn du statt der input Zeile dort noch was intelligentes einfügst was den Namen bildet oder sich wenigstens merkt was es kennt sollte der Code dir helfen können.
ooo schrieb: > Walter K. schrieb: > >> Das wird für die exe-Generation aber sehr schwierig / zumal die bisher >> kaum was von regular expressions gehört haben > > > sed 's/4/vier/g; s/50/fünfzig/g' <<< 'Ich nehme 4 Eier, 50 Leute ...' > Wo versteckt sich da nun ein Regulärer Ausdruck? Was geschieht mit 'Da kommen 450g Mehl rein...' und 'Die Distanz beträgt 44504km...' $ sed -e 's/[^\d]4[^\d]/vier/g; ...'
Tipster schrieb: > Wo versteckt sich da nun ein Regulärer Ausdruck Nirgends. Beispiel simpler Ersetzung. Autor: imonbln >> ein paar Regeln die helfen können. von 0-13 ist >> unregelmäßig und muss Kodiert werden, 14-19 nennt erst denn einer dann >> den Zehner also vierzehn und ab 20-100 ist "einer + 'und + 'Zehner'", ab >> Hundert nennt man erst die hundert und dann folgt man den bisherigen >> Regeln. Und die Groß- und Kleinschreibung und ... k.A. zuviel um das auf ein Backrezept loszulassen, wer Lust und zeit hat kriegt das schon hin oocalc kann wohl auch basic-, phyton-, java-, bean- Skripte wie es sich um shell-zugriffe bestellt weis ich nicht.
http://faql.de/typographie.html#zahlen Der Hammer! Sehr detailliert Ralph Babel hat einen recht amüsanten Schreibstil und ungewohnte Tiefe (viele Beispiele, Erklärungen und Ausnahmen). Die ganze Site faql.de gefällt mir.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.