mikrocontroller.net

Forum: PC-Programmierung "50 Leute nahmen teil -> Fünfzig Leute nahmen teil" Konverter


Autor: Christoph Haus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Test (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach ein Pythonscript

Autor: iop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In welchem Bereich liegen die Zahlen?
Kann eine Textersetzung a la sed (stream editor) vorgenommen werden?

Autor: MicNic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann man net dafür einfach die gute alte "Suchen und Ersetzen" Funktion 
verwenden? 4 -> vier, 50 -> fünfzig?

Autor: Tipster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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]'

Autor: nachtmix (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
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.

Autor: foobar (Gast)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
> 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

Autor: iop (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
>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.

Autor: Walter K. (walter_k488)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christoph Haus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
iop schrieb:
> Genau das kann sed.exe mit regulären Ausdrücken in einem Script
> vollautomatisch.

Wie sieht dieses Skript aus?

Autor: ooo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wozu wenns nur ein paar sind?

tools -> macro -> record macro, bereich auswaehlen, f3 oder 
find&replace, ersetzungen durchfuehren, abspeichern

Autor: georg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: ooo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ...

Autor: Rolf M. (rmagnus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Statistik-Statist (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
50 Personen haben achtundzwanzig Eier. Wieviele Personen haben statt 
dessen Eierstöcke?

Autor: imonbln (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.
def int2string(string):
    new = string
    numbers = set(re.findall('\d+', string))
    for num in sorted(numbers, reverse=True):
        name = input('Sage mir wie heist {} :'.format(num))
        new = new.replace(num, name.strip())
    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.

Autor: Tipster (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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; ...'

Autor: ooo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: iop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Hohnecker (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Walter K. schrieb:
> sed.exe?

Kennst du nicht die sed.exe? Die stammt noch aus DDR Zeiten ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.