2015-11-13 52 views
1

我有一句话'现在对于完全不同的东西'。我想标记它,标记并将其存储到Excel文件中以供进一步处理。
<pre>sent = "And now for something completely different" words = nltk.word_tokenize(sent) tags = nltk.pos_tag() print tags</pre>在Excel中写一个清单

上面的结果是带有嵌套列表格式的标签的单词。

[('And', 'CC'), ('now', 'RB'), ('for', 'IN'), ('something', 'NN'), ('completely', 'RB'), ('different', 'JJ')]

我想这个结果列表存储到一个Excel文件,在一列文字和标签其他。

我试着通过下面的代码来实现上述目的。

fd = open("output.txt",'w') 
i=0 
for words in tags: 
    for word in words: 
     i+=1 
     fd.write(word) 
     if i==1: 
      fd.write('\t') 
     fd.write('\n') 
    i=0 

上述代码将字和标签完美地写入输出文件。如果我使用shutil方法从文本文件复制到excel格式,它将完美执行。当我尝试阅读转换时出现问题。我收到以下错误。

XLRDError: Unsupported format, or currupt file: Expected BOF record; founf 'And\tCC\n'

谁能告诉我,我该怎么写标记列表输出文件,这样我上面的错误能解决吗?

+1

如何使用shutil从文本复制到excel格式?你知道excel格式不只是文件扩展名(.xlsx)。这意味着文件的内容应该以特殊的方式组织起来,以便Excel应用程序知道如何阅读它。一般来说,您可以使用[xlsxWriter](https://pypi.python.org/pypi/XlsxWriter)模块,也可以使用[CSV]编写文件(https://en.wikipedia.org/wiki/Comma-separated_values )格式,然后在Excel中导入它。 –

回答

4

Excel文件(xlsx)不只是简单的平面文件,所以试图将文本文件复制到xlsx将不起作用。您可以将文件另存为csv并在Excel中打开它。我认为熊猫对解析和写入数据文件非常有用(显然它对处理数据也很有用)。

import pandas as pd 
df = pd.DataFrame(tags) 
df.to_excel('output.xlsx', header=False, index=False) 
+0

我对熊猫一无所知,但会尝试你的建议并让你知道结果。 –

+0

我尝试了你的建议。我工作。非常感谢你。如果我有一个以上的句子,这会起作用吗? –

+0

是的。您也可以输出到不同的工作表,从不同的单元格开始,或者使用标题/索引输出。如果您想一次将多个表写入不同位置,请使用pd.ExcelWriter。 – Colin

1

而不是写入excel格式。您已经将文件写入制表符分隔值。 Excel知道如何阅读。我建议你用'.tsv'扩展名保存你的文件并在excel中打开它。

+0

我试图以.ts格式保存文件,而且我仍然收到相同的错误。感谢您的建议。 –