Textexpander mit Python: Nummer Copy & verändern & Paste

Code-Stücke können hier veröffentlicht werden.
Antworten
niwy
User
Beiträge: 3
Registriert: Donnerstag 23. April 2015, 09:24

Hallo,

Ich benötige Hilfe für folgendes Vorhaben:
  • 1. Ich habe immer wieder Telefonnummern im Format "0456985894", welche ich verändern muss in Ländervorwahl Schweiz "0041" & Telefonnummer ohne vorangestelltes "0" und gruppiert wie folgt: "0041 45 698 58 94". Meine Idee wäre nun: Telefonnummer "0456985894" auswählen, in Zwischenablage kopieren, in das Dokument wechseln, in welches die Telefonnummer eingefügt werden soll. Anschließend mit einem Textexpander-Shortcut ein Python-Script ausführen, welches die Nummer von "0456985894" in "0041 45 698 58 94" umwandelt und in das Dokument einfügt.
  • 2. Dasselbe sollte ich mit Telefonnummern im Format "045 698 58 94" ausführen können: von "045 698 58 94" in "0041 45 698 58 94". Dies kann auch in einem separaten, zusätzlichen Code umgesetzt werden.
Es gibt auf GitHub ein Code für python-phonenumber https://github.com/daviddrysdale/python-phonenumbers, dies ist mir allerdings etwas zu komplex. Ausserdem gibt es einige ähnliche Anfragen unter http://stackoverflow.com/questions/7058 ... -in-python, http://www.quora.com/What-is-the-best-w ... -in-Python, aber ich habe Schwierigkeiten, ein Script zu basteln.

Danke und Gruss
NiWy
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Da könnte einfaches Slicing und Stringformatierung reichen.

Code: Alles auswählen

>>> phone = "0456985894"
>>> '0041 {} {} {} {}'.format(phone[1:3], phone[3:6], phone[6:8], phone[8:])
'0041 45 698 58 94'
Zweites Beispiel

Code: Alles auswählen

>>> phone = "045 698 58 94"
>>> '0041 {} {} {} {}'.format(phone[1:3], phone[3:6], phone[6:8], phone[8:])
'0041 45  69 8  58 94'
Sieh an, da müssen wohl vorher die Leerzeichen weggeworfen werden.

Code: Alles auswählen

>>> phone = "045 698 58 94"
>>> phone = phone.replace(' ', '')
>>> phone
'0456985894'
>>> '0041 {} {} {} {}'.format(phone[1:3], phone[3:6], phone[6:8], phone[8:])
'0041 45 698 58 94'
niwy
User
Beiträge: 3
Registriert: Donnerstag 23. April 2015, 09:24

Hallo,

Danke für deine Antwort und Hilfestellung!

Wenn ich jetzt wie beschrieben die Nummer in der Zwischenablage habe, wie hole ich den Inhalt der Zwischenablage das Python-Script? Reicht ein

Code: Alles auswählen

#!/usr/bin/python
import sys
selection = """%clipboard"""
aus?

Und wie verknüpfe ich den "Zwischenablage-Code" mit dem von dir geposteten Code? Was mir etwas merkwürdig rüberkommt: muss nicht eher ein Platzhalter anstelle der Telefonnummer "0456985894" verwendet werden? Vielleicht habe ich mich unklar ausgedrückt: ich habe verschiedene Telefonnummern zu formatieren, nicht nur die "0456985894".

Gruss
BlackJack

@niwy: Wie kommst Du darauf das es einen Platzhalter wie '%clipboard' gibt? Du brauchst ein Modul das den Inhalt der Zwischenablage auslesen und neu setzen kann. `Tkinter` aus der Standardbibliothek hat da etwas, es gibt aber auch externe Module die das ohne komplettes GUI-Toolkit entweder plattformspezifisch oder -unabhängig lösen.
niwy
User
Beiträge: 3
Registriert: Donnerstag 23. April 2015, 09:24

Hallo,

War mein Fehler, Sorry: der

Code: Alles auswählen

#!/usr/bin/python
import sys
selection = """%clipboard"""
sys.stdout.write(selection.upper())
besteht sehr wahrscheinlich teilweise aus einem in Textexpander verwendeten Code. Dieser Code wandelt der Zwischenablage Inhalt in Uppercase...
Antworten