Python 如何解决序列项0:应为str实例,找到元组

Python 如何解决序列项0:应为str实例,找到元组,python,nlp,Python,Nlp,我试图用下面的nltk代码做一些词性标记,当我试图写入一个新文件时,我遇到了上面的问题。如果我运行fout.write\n.jointaged,则会显示上述错误和totry,并解决当我运行fout.writest.jointaged时,会显示“join”需要一个“str”对象,但收到一个“list” 文本文件是本地存储的,并且相对较大 from pathlib import Path from nltk.tokenize import word_tokenize as wt import nlt

我试图用下面的nltk代码做一些词性标记,当我试图写入一个新文件时,我遇到了上面的问题。如果我运行fout.write\n.jointaged,则会显示上述错误和totry,并解决当我运行fout.writest.jointaged时,会显示“join”需要一个“str”对象,但收到一个“list”

文本文件是本地存储的,并且相对较大

from pathlib import Path
from nltk.tokenize import word_tokenize as wt
import nltk
import pprint

output_dir = Path ("\\Path\\")
output_file = (output_dir / "Token2290newsML.txt")

news_dir = Path("\\Path\\")
news_file = (news_dir / "2290newsML.txt")

tagged_dir = Path("\\Path\\")
tagged_file = (tagged_dir / "tagged2290newsML.txt")

file = open(news_file, "r")
data = file.readlines()

f = open(tagged_file, "w")

def process_content():
    try:
        for i in data:
            words = wt(i)
            pprint.pprint(words)
            tagged = nltk.pos_tag(words)
            pprint.pprint(tagged)
            #f.write("\n".join(tagged))
            f.write(str.join(tagged))

    except Exception as e:
        print(str(e))

process_content()
file.close()
任何帮助都将不胜感激

谢谢:

返回2元组列表。每个元组的第一个元素是单词,第二个元素是与单词对应的词性标记。例如:

>>> tagged = nltk.pos_tag('This is a test'.split())
>>> tagged
[('This', 'DT'), ('is', 'VBZ'), ('a', 'DT'), ('test', 'NN')]
假设您希望每行书写每个单词及其标记:

with open(tagged_file, 'w') as f:
    for pair in tagged:
        print(' '.join(pair), file=f)
这将创建一个包含以下内容的文件:

This DT is VBZ a DT test NN
您可以根据需要更改文件格式。

如果pprint.pprinttaged太长,输出摘要是什么?join对字符串序列进行操作,但标记的似乎是元组序列。在加入之前,可能需要将列表展平。请检查标记的变量。它应该是一个str列表。另外,当直接调用str.join时,您需要将连接字符串作为第一个参数传递,即str.join'\n',taged。但请注意,您随后将得到相同的异常。@mhawke输出为['If']['If','IN']描述符'join'需要一个'str'对象,但收到了一个'list'。我将如何处理您评论的后半部分?@mhawke是的,我刚刚尝试过,我确实收到了相同的例外我尝试在代码中使用上述逻辑,但我得到了与之前类似的错误TypeError:write参数必须是str,而不是listTry使用我显示的代码。你正在传递一个要写的列表——这是行不通的。你到底想在输出文件中得到什么?我想要你的输出,即“word tag”在行或在单独的行上。现在我可以复制上面的结果,即将文件中每个单词的单词和标记打印到控制台,但当我尝试将输入保存到新文件时会出现问题什么问题?你必须说问题出在哪里。为什么不使用print'.joinpair,file=f,如上所示?这会将每行的每个单词和标记写入输出文件。