Klicken Sie hier für Details: https://pypi.python.org/pypi/PrettyTable Ich habe folgendes mit pip installiert. Dies ist praktisch, wenn die Länge jedes Listenelements unterschiedlich ist und es selbst dann schwer zu erkennen ist, wenn Sie versuchen, es auszugeben. Dieser Zeitcode: https://github.com/KodairaTomonori/Qiita/blob/master/module/prettyprint/make_table.py
pip.
$ pip search prettytable
prettytable-extras - An extension to the excellent prettytable Python library
Dieses Mal werde ich die Verwendung von "Mecab" erklären, das die Morphologie analysiert. Wenn Sie einen Satz eingeben, gibt mecab das Ergebnis der morphologischen Analyse als Zeichenfolge zurück. Dies kann auch einfach mit pip installiert werden.
mecab_test.
$ python
Python 3.5.0
>>> import MeCab
>>> MeCab.Tagger().parse('Der Körper besteht aus Schwert')
'Körper\t Substantiv,Allgemeines,*,*,*,*,Körper,Körper,Körper\n ist\t Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend\n Schwert\t Substantiv,Allgemeines,*,*,*,*,Schwert,Ken,Ken\bei n\t Assistent,Fallassistent,Allgemeines,*,*,*,damit,De,De\n fertig\t verb,Unabhängigkeit,*,*,Ein Schritt,Kontinuierlicher Typ,Tun können,Deキ,Deキ\n\t Assistent,Verbindungsassistent,*,*,*,*,Hand,Te,Te\n\t verb,非Unabhängigkeit,*,*,Ein Schritt,Grundform,Ist,Il,Il\nEOS\n'
>>> print(MeCab.Tagger().parse('Der Körper besteht aus Schwert') )
Körpernomenklatur,Allgemeines,*,*,*,*,Körper,Körper,Körper
Ist ein Assistent,Hilfe,*,*,*,*,Ist,C.,Beeindruckend
Schwert Nomen,Allgemeines,*,*,*,*,Schwert,Ken,Ken
Hilfs,Fallassistent,Allgemeines,*,*,*,damit,De,De
Fertiges Verb,Unabhängigkeit,*,*,Ein Schritt,Kontinuierlicher Typ,Tun können,Deki,Deki
Der Assistent,Verbindungsassistent,*,*,*,*,Hand,Te,Te
Das Verb das ist,Nicht unabhängig,*,*,Ein Schritt,Grundform,Ist,Il,Il
EOS
Es wird so ausgegeben, aber wenn Sie es nur drucken, ist es schwer zu erkennen, da nichts dahinter steckt Daher möchte ich "hübsche Tabelle" verwenden, um dies besser sichtbar zu machen.
make_prettytable.py
import MeCab
import prettytable
def make_prettytable(others, header=[]):
if not header: header = range(len(list(others)[0]) )
if len(header) != len(others[0]):
print('incorrect length!')
return
table = prettytable.PrettyTable(header)
for other in others: table.add_row(other)
return table
def make_mecab_info_table(sentence, output_info=[], \
mecab_parser=MeCab.Tagger.parse):
others = list(map(lambda x: x.split(','), \
mecab_parser(sentence).replace('\t', ',').split('\n') ) )[:-2]
return make_prettytable(others, output_info)
if __name__ == '__main__':
mecab_output = 'Oberflächentyp,Teil,Teil細分類1,Teil細分類2,Teil細分類3,Nutzungsart,Nutzungsart,Prototyp,lesen,Aussprache'
parser = MeCab.Tagger().parse
header = mecab_output.split(',')
print(make_mecab_info_table(input(), header, parser) )
Es wurde einfacher, so zu sehen.
make_prettytable
enthält den Inhalt des ersten Arguments ( other
) und die Informationen in der oberen Zeile des zweiten Arguments (header
).
Wenn header
kein Argument erhält, wird es mit range
nummeriert.
Fügen Sie für "andere" eine Liste wie "[[1,2, ...], [2,3, ...] ...]" ein.
Fügen Sie in "prettytable.PrettyTable" die obere Zeile ("header") ein und bilden Sie die Basis der Tabelle.
In der folgenden "for" -Anweisung wird "other" gedreht und ".add_row" wird zeilenweise hinzugefügt.
Danach können Sie die Tabelle einfach durch Drucken sehen.
make_mecab_info_table behandelt Zeichen nur normal.
Dies ist praktisch, wenn die Längen der Listenelemente unterschiedlich sind, da es selbst dann schwer zu erkennen ist, wenn Sie versuchen, etwas auszugeben und zu überprüfen.
Recommended Posts