[PYTHON] Ich möchte horizontalen Text in vertikalen Text konvertieren und auf Twitter usw. veröffentlichen.

Fast alle SNS wie Twitter sind horizontal geschrieben. Schreiben wir ein Python-Skript, das dies in vertikales Schreiben umwandelt, während wir gleichzeitig die Python-Programmierung studieren.

Tweet

Ich möchte die folgenden Tweets vertikal schreiben.

tweet = '''\
Normalerweise wird Tweet horizontal geschrieben,
Ich möchte das vertikal schreiben.
Das würde es schwieriger machen zu finden, oder?
Warum versuchst du es nicht mit Python?
'''
tweet

'Normalerweise wird Tweet horizontal geschrieben, aber \ nIch möchte es vertikal schreiben. \ n Dann wird es schwierig sein zu suchen, oder? \ nWarum versuchst du es nicht mit Python? \ n '

Zerlegen Sie in 1 Zeichen 1 Zeichen

Sie können es nacheinander in Zeichen aufteilen, indem Sie die folgenden Schritte ausführen.

for line in tweet.split("\n"):
    print([line[i] for i in range(len(line))])

['Öffentlich', 'Kommunikation', 'ist', '', 'T', 'w', 'e', 'e', 't', '', 'ist', 'horizontal', 'Buch' , 'Ki', 'Na', 'N', 'Da', 'Ke', 'Do', 'Sa', ','] ['Ko', 're', 'to', 'vertikal', 'book', 'ki', 'to', 'shi', 'ta', 'i', 'wa', 'ke', ' Yo ','. '] ['Also', 'U', 'Su', 'Ru', 'und', ',', 'Inspektion', 'Suche', 'Sa', 'Re', 'bis', 'Ku', ' Ku ',' na ',' ru ',' n ',' ji ',' ya ',' ne ','? '] ['ICH', ' ','',',',',',',',',',' oder','? '] []

Da jedoch nur die letzte Zeile leer ist, schließen wir sie aus.

for line in tweet.split("\n"):
    if len(line) > 0:
        print([line[i] for i in range(len(line))])

['Öffentlich', 'Kommunikation', 'ist', '', 'T', 'w', 'e', 'e', 't', '', 'ist', 'horizontal', 'Buch' , 'Ki', 'Na', 'N', 'Da', 'Ke', 'Do', 'Sa', ','] ['Ko', 're', 'to', 'vertikal', 'book', 'ki', 'to', 'shi', 'ta', 'i', 'wa', 'ke', ' Yo ','. '] ['Also', 'U', 'Su', 'Ru', 'und', ',', 'Inspektion', 'Suche', 'Sa', 'Re', 'bis', 'Ku', ' Ku ',' na ',' ru ',' n ',' ji ',' ya ',' ne ','? '] ['ICH', ' ','',',',',',',',',',' oder','? ']

Drücken Sie den obigen Prozess mit der Listeneinschlussnotation intelligent aus und fügen Sie ihn in die Variable "Daten" ein.

data = [[line[i] for i in range(len(line))] for line in tweet.split("\n") if len(line) > 0]
print(data)

[['Öffentlich', 'Kommunikation', 'ist', '', 'T', 'w', 'e', 'e', 't', '', 'ist', 'horizontal', 'Buch ',' Ki ',' Na ',' N ',' Da ',' Ke ',' Do ',' Sa ',', '], [' Ko ',' Re ',' to ',' Vertical ',' Kalligraphie ',' ki ',' ni ',' shi ',' ta ',' i ',' wa ',' ke ',' yo ','. '], [' Also ',' U ',' Su ',' Ru ',' und ',', ',' Inspektion ',' Suche ',' Sa ',' Re ',' Ni ',' Ku ',' Ku ',' na ',' ru ',' n ',' ji ',' ya ',' ne ','? '], [' I ',' ',', 'Chi', 'Yo', '', 'P', 'y', 't', 'h', 'o', 'n', 'de' , 'Ya', 'tsu', 'te', 'mi', 'na', 'i', 'ka', '? ']]

Transponiert mit Numpy

Ich möchte numpy verwenden können, weil ich die Matrix transponieren möchte.

import numpy as np
np.array(data)

Array ([Liste (['Öffentlich', 'Kommunikation', 'ist', '', 'T', 'w', 'e', 'e', 't', '', 'ist', 'horizontal ',' Kalligraphie ',' Ki ',' Na ',' N ',' Da ',' Ke ',' Do ',' Sa ',', ']), Liste (['ko', 're', 'to', 'vertikal', 'book', 'ki', 'to', 'shi', 'ta', 'i', 'wa', 'ke' , 'Yo', '.']), Liste (['so', 'u', 'su', 'ru', 'und', ',', 'Inspektion', 'Suche', 'sa', 're', 'ni', 'ku' , 'Ku', 'na', 'ru', 'n', 'ji', 'ya', 'ne', '?']), Liste (['i', 'tsu', 'chi', 'yo', '', 'P', 'y', 't', 'h', 'o', 'n', 'in', 'Ya', 'tsu', 'te', 'mi', 'na', 'i', 'ka', '?'])], dtype=object)

Wie oben erwähnt, wird es zu einem Array von Listen und es funktioniert nicht.

Messen Sie daher die Anzahl der Zeilen und Spalten und bereiten Sie ein Array vor, das dieser Größe entspricht.

max_length = 0 #Zählen Sie die Anzahl der Zeichen im längsten Satz
for d in data:
    if max_length < len(d):
        max_length = len(d)

Aus dem Obigen können wir sehen, dass "Tweet" durch ein Array von "len (Daten)" Zeilen und "max_length" Spalten dargestellt werden kann. Bereiten wir also ein numpy Array derselben Größe vor. Füllen Sie es vorher mit leeren Zeichen.

import numpy as np
np.full((len(data), max_length), " ")
array([['\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000'],
       ['\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000'],
       ['\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000'],
       ['\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000',
        '\u3000', '\u3000', '\u3000']], dtype='<U1')

Kopieren Sie anschließend die Zeichen der Daten zeichenweise in das Numpy-Array.

Stellen Sie zu diesem Zeitpunkt jedoch sicher, dass die Reihenfolge der Anweisungen umgekehrt ist.

data2 = np.full((len(data), max_length), " ")
for i in range(len(data)):
    for j in range(max_length):
        if j < len(data[i]):
            data2[len(data) - i - 1][j] = data[i][j]
data2

Array ([['i', 'tsu', 'chi', 'yo', '', 'P', 'y', 't', 'h', 'o', 'n', 'de' , 'Ya', 'T', 'T', 'Mi', 'Na', 'Ich', 'Ka', '? ',' \ u3000 '], ['Also', 'U', 'Su', 'Ru', 'und', ',', 'Inspektion', 'Suche', 'Sa', 'Re', 'bis', 'Ku', ' Ku ', 'Na', 'Ru', 'N', 'Ji', 'Ya', 'Ne', '? ',' \ u3000 '], ['Ko', 're', 'to', 'vertikal', 'book', 'ki', 'to', 'shi', 'ta', 'i', 'wa', 'ke', ' Yo ', '。', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000', '\u3000'], ['Öffentlich', 'Tsu', 'ist', '', 'T', 'w', 'e', 'e', 't', '', 'ist', 'horizontal', 'Buch , 'Ki', 'Na', 'N', 'Da', 'Ke', 'Do', 'Sa', ',']], dtype = '<U1')

Wenn Sie dies bisher tun können, können Sie mithilfe der Transposition der Matrix vertikal schreiben.

data2.T #Translokation der Matrix

Array ([['i', 'so', 'ko', 'normal'], ['T', 'U', 'Re', 'Tsu'], ['Chi', 'Su', 'O', 'ist'], ['Yo', 'Ru', 'Vertical', ''], ['', 'Und', 'Buch', 'T'], ['P', ',', 'ki', 'w'], ['y', 'inspektion', 'bis', 'e'], ['t', 'search', 'shi', 'e'], ['h', 'sa', 'ta', 't'], ['o', 're', 'i', ''], ['n', 'bis', 'wa', 'wa'], ['De', 'Ku', 'Ke', 'Horizontal'], ['Ya', 'Ku', 'Yo', 'Buch'], ['T', 'Na', '. ',' Ki '], ['Te', 'Ru', '\ u3000', 'Na'], ['Mi', 'N', '\ u3000', 'N'], ['Na', 'Ji', '\ u3000', 'Da'], ['I', 'ya', '\ u3000', 'ke'], ['Ka', 'Ne', '\ u3000', 'Do'], ['? ','? ',' \ u3000 ',' sa '], ['\u3000', '\u3000', '\u3000', '、']], dtype='<U1')

Geben Sie die transponierte Matrix als Zeichenfolge aus

delimiter = " "
for line in data2.T:
    print(delimiter.join(line))

Isoko Fu Tsuretsu Chisu Vertikal Und Buch T. P, ki w y zu überprüfen e t Suche e h sata t o Rei n Neben dem großen Yakuyo Buch Was? Ki Teruna Minn Es ist das gleiche Yake Kane ?? ?? Sa       、

Dies kann mithilfe der Listeneinschlussnotation intelligent umgeschrieben werden.

delimiter = " "
print("\n".join([delimiter.join(line) for line in data2.T]))

Isoko Fu Tsuretsu Chisu Vertikal Und Buch T. P, ki w y zu überprüfen e t Suche e h sata t o Rei n Neben dem großen Yakuyo Buch Was? Ki Teruna Minn Es ist das gleiche Yake Kane ?? ?? Sa       、

Zusammenfassung

Ich habe die obige Operation als Funktion namens "yoko2tate" ausprobiert.

def yoko2tate(tweet, delimiter = " "):
    data = [[line[i] for i in range(len(line))] for line in tweet.split("\n") if len(line) > 0]
    max_length = 0
    for d in data:
        if max_length < len(d):
            max_length = len(d)
    data2 = np.full((len(data), max_length), " ")
    for i in range(len(data)):
        for j in range(max_length):
            if j < len(data[i]):
                data2[len(data) - i - 1][j] = data[i][j]
    return "\n".join([delimiter.join(line) for line in data2.T])

Das Anwendungsbeispiel sieht folgendermaßen aus.

tweet = '''\
Ah...Ahりのまま 今 起こったことを話すぜ!

"Als ich einen Tweet eingegeben habe, wurde er vertikal geschrieben."

Nana...何を言っているか分からねーと思うが、おれも何をされたのか分からNanaかった...
'''

print(yoko2tate(tweet))

"Ah" .Tsu. . ICH . .-. Was Zu Der Welt Leistung Teshima War Rura jetzt Oder Winziger vertikaler Anstieg Kalligraphie Raki Nita -Nako Toto Habe gedacht U "Geschichte Ist Ze Oh! Re Ebenfalls Was Zu Sa Re Ta von Oder Protokoll Oder Et al. Nana Oder Tsu Ta .     .     .

Recommended Posts

Ich möchte horizontalen Text in vertikalen Text konvertieren und auf Twitter usw. veröffentlichen.
Ich möchte Twitter mit Python twittern, bin aber süchtig danach
Ich habe versucht, Twitter Scraper mit AWS Lambda zu verwenden, aber es hat nicht funktioniert.
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
Ich möchte ein Histogramm erstellen und die Normalverteilungskurve darauf überlagern. matplotlib edition
Ich habe ein POST-Skript erstellt, um ein Problem in Github zu erstellen und es im Projekt zu registrieren
Ich möchte Linux auf dem Mac verwenden
Ich möchte Python-Code auf VS-Code nach meinen Wünschen formatieren und überprüfen
Ich möchte Android-Apps auf Android entwickeln
Ich möchte eine Datei auf tkinter ablegen und ihren Pfad abrufen [Tkinter DnD2]
Ich möchte ein Element mit numpy in eine Datei schreiben und es überprüfen.
Ich habe ein Bildklassifizierungsmodell erstellt und versucht, es auf dem Handy zu verschieben
Ich möchte pyenv + pipenv auch unter Windows machen
Ich möchte die Eingabe / Ausgabe von Dateien unter Linux protokollieren
Ich möchte die Variablen in der Python-Vorlagendatei ersetzen und in einer anderen Datei in Massenproduktion herstellen
Ich möchte ein Bild mit Lollipop in WebP konvertieren
Ich möchte Android-Apps auf Android entwickeln (Debug)
Ich möchte ein beliebtes Paket auf PyPi finden
Posten Sie mit der API auf Twitter in Ihrem Konto
Ich möchte Lambda mit Python auf Mac AWS!
Ich möchte OpenJDK 11 mit Ubuntu Linux 18.04 LTS / 18.10 verwenden
Ich habe versucht, Scrapy auf Anaconda zu installieren und konnte es nicht
Ich möchte Wake On LAN vollautomatisch ausführen
POST das ausgewählte Bild auf der Website mit mehrteiligen / Formulardaten und speichere es in Amazon S3! !!
Ich möchte ein englisches Papier aus dem PDF-Format kopieren und in die Google-Übersetzung einfügen
Ich möchte den Unterschied zwischen der for-Anweisung in der Python + numpy-Matrix und der Julia for-Anweisung auffangen
Verwenden Sie pyOCR, um die Beschreibung auf der Karte in Text umzuwandeln
Ich möchte Interrupts auf dem Raspberry Pi deaktivieren (≒ DI / EI)
Ich möchte meine Abschlussarbeit über IPython Notebook ankündigen
Wie man Youtube in MP3 konvertiert und es super sicher herunterlädt [Python]
Ich möchte eine ISO-8601-Zeichenfolge in japanische Zeit konvertieren
Ich möchte die Natur von Python und Pip kennenlernen
Ich möchte eindeutige Werte in einem Array oder Tupel zählen
Ich möchte den EDINET-Code und die Wertpapiernummer zuordnen
Ich möchte, dass Sphinx bequem ist und von allen benutzt wird
Ich möchte die Legende der IT-Technologiewelt kennenlernen
Ich möchte VS Code und Spyder ohne Anakonda verwenden! !! !!
Skript zum Konvertieren zwischen Xcode-Sprachdateien und tabulatorgetrenntem Text
[Für Black-Screen-Phobie] Ich möchte etwas über Linux und Shells wissen, deshalb habe ich sie lose illustriert.
So überprüfen und ändern Sie Linux-Berechtigungen (chmod) (chmod) (Ich möchte bei Verweigerung von Permiss gespeichert werden)