【问题标题】:Join strings from for loop into a single line [duplicate]将for循环中的字符串连接成一行[重复]
【发布时间】:2016-06-05 03:07:39
【问题描述】:

我有一个生成 nltk 块的语法标签,

    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)

这给了我以下输出,

    DT
    JJ
    NN
    NN
    VBD
    IN
    DT
    JJ
    NN

但是,我希望输出像

一样单行
    DT JJ NN NN VBD IN DT JJ NN      

我该怎么做?

【问题讨论】:

  • python3的print函数有一个end参数,设置为' ',例如print(tag, end=' '):见docs.python.org/3.5/library/…
  • 请这样做..添加一个逗号..print tag,
  • @AChampion 在 cmets 中复制我的答案是没有用的

标签: python python-2.7 for-loop nltk


【解决方案1】:

如果您不仅想打印,还想将结果存储在字符串中,您可以使用str.join() 和单个list comprehension

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

请注意,_ 是一次性变量的通用变量名。

【讨论】:

    【解决方案2】:

    我认为最终您不会想要打印整个字符串并继续使用print(tag, end = ' '),因此将其分配给新变量如下所述。 在上面初始化一个变量 tag_str 并在这样的 print 语句之后使用它。

    tag_str += ' '
    
    tag_str += tag
    

    【讨论】:

      【解决方案3】:

      如果您不使用 Python 3,您可以直接写信给sys.stdout,这样您就可以跳过换行符。

      【讨论】:

        【解决方案4】:

        这样做

        print (tag, end=" ")
        

        这应该留一个空格,而不是转到下一行。

        【讨论】:

        • 我使用的是 python 2.7,所以不起作用。给出语法错误
        【解决方案5】:

        如果您使用的是 python 2.x 使用print(tag,), 将输出放在同一行。所以你可以使用print (tag + ' ',)

        如果您使用的是 python 3 使用 print(tag, end="")print(tag, end=" ") 取决于您是否需要空格。

        【讨论】:

          猜你喜欢
          • 2017-01-30
          • 1970-01-01
          • 2015-12-16
          • 2020-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多