2015-11-13 2 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

Как использовать шрифт для копирования из текста в формат 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, и я все равно получаю ту же ошибку. Спасибо за предложение. –