2016-06-05 5 views
1

I nltk Block eine Grammatik-Tag produziert haben, die Join Strings aus for-Schleife in einer einzigen Zeile

sent_text = nltk.sent_tokenize(text) # this gives us a list of sentences 
    # now loop over each sentence and tokenize it separately 
    for sentence in sent_text: 
      tokenized_text = nltk.word_tokenize(sentence) 
      tagged = nltk.pos_tag(tokenized_text) 
      for word, tag in tagged: 
       print(tag) 

ist Das gibt mir die folgende Ausgabe,

DT 
    JJ 
    NN 
    NN 
    VBD 
    IN 
    DT 
    JJ 
    NN 

Allerdings möchte ich die Ausgabe bis single lined wie

DT JJ NN NN VBD IN DT JJ NN  

Wie mache ich das?

+1

Die python3 'print' Funktion hat einen' end' Parameter, setze ihn auf '''', z. 'print (tag, end = '')': siehe https://docs.python.org/3.5/library/functions.html?highlight=print%20function#print – AChampion

+1

Bitte tun Sie dies .. fügen Sie ein Komma .. 'hinzu print tag, ' – AceLearn

+0

@AChampion gibt es keine Verwendung Kopieren meiner Antwort in den Kommentaren –

Antwort

1

Wenn Sie nicht nur wollen, drucken, aber das Ergebnis in einem String, können Sie str.join() und einen einzigen list comprehension verwenden:

tags = [tag 
     for sentence in sent_text 
     for _, tag in nltk.pos_tag(nltk.word_tokenize(sentence))] 
result = " ".join(tags) 
print(result) 

Beachten Sie, dass die _ einen gemeinsamen Variablennamen für Wegwerf-Variablen ist.

1

Tun Sie dies

print (tag, end=" ") 

, die einen Raum verlassen sollte und nicht zur nächsten Zeile gehen.

+0

Ich benutze Python 2.7 so funktioniert nicht. Gibt Syntaxfehler –

1

Ich glaube nicht, dass Sie letztlich die gesamte Zeichenfolge drucken und weiterhin print(tag, end = ' ') verwenden möchten, um sie einer neuen Variablen zuzuordnen, wie unten erklärt. Initialisiere eine Variable tag_str oben und verwende sie nach der print-Anweisung wie folgt.

tag_str += ' ' 

tag_str += tag 
1

Wenn Sie nicht mit Python 3, können Sie direkt zu sys.stdout, schreiben die Ihnen ermöglichen würde, die Newline-Zeichen zu überspringen.

1

Wenn Sie Python 2.x verwenden verwenden Sie print(tag,), die , puts Ausgabe in der gleichen Zeile. so können Sie print (tag + ' ',)

verwenden Wenn Sie Python verwenden 3 Verwendung print(tag, end="") oder print(tag, end=" ") je nachdem, ob Sie Leerzeichen wollen oder nicht.

Verwandte Themen