2016-07-23 2 views
0

У меня есть два разных файла. Файл «Sentence» содержит пул предложений, см. Снимок ниже. Sentence SnapshotЧтобы сопоставить слово из пула предложений с использованием Python

Файл «Слово» содержит пул слов, см. Снимок ниже.

Word file snap shot

Я хочу сопоставить слова из файла слова приговаривать файл, если любое слово соответствие с предложением, я хочу результат в виде предложения и подходящее слово

, например: Приговор Совпадение Слова Linux и открытый стек отлично Linux Open stack

Код, приведенный ниже, когда я пытаюсь извлечь результат в csv, показывает его ошибку.

import pandas as pd 
import csv 

sentence_xlsx = pd.ExcelFile('C:\Python\Seema\Sentence.xlsx') 
sentence_all = sentence_xlsx.parse('Sheet1') 
#print(sentence_all) 
word_xlsx = pd.ExcelFile('C:\Python\Seema\Word.xlsx') 
word_all = word_xlsx.parse('Sheet1')    


for sentence in sentence_all['Article']: 
    sentences = sentence.lower() 

    for word in sentences.split(): 
     if word in ('linux','openstack'): 
      result = word,sentence 

results = open('C:\Python\Seema\result.csv', 'wb') 
writer = csv.writer(results, dialect='excel') 
writer.writerows(result) 
results.close() 

Traceback (most recent call last): 
    File "Word_Finder2.py", line 25, in <module> 
    results = open('C:\Python\Seema\result.csv', 'wb') 
IOError: [Errno 22] invalid mode ('wb') or filename: 'C:\\Python\\Seema\result.c 
sv' 
+0

Пожалуйста, добавьте полную отслеживающие ошибки –

+0

@Moses Koledoye: Я добавил ошибок отслеживающего –

+0

Попробуйте открыть с помощью ' 'w'' режима вместо этого. Вы все еще можете получить еще одну ошибку, поскольку 'writows' работает со списком строк, а не только с любым итерабельным –

ответ

1

'\result.csv' часть вашего пути имеет свой '\r' читается как символ возврата каретки. Чтобы исправить это, добавьте ведущий r в путь, чтобы сделать его строковым литералом строки (credit @georg).


Затем использовать writerows, результат от всех итераций должны быть накоплены в список, а не только последний результат.

result = [] # create list to hold result from each iteration 
for sentence in sentence_all['Article']: 
    sentences = sentence.lower() 

    for word in sentences.split(): 
     if word in ('linux','openstack'): 
      # append result of iteration to result 
      result.append([sentence, word]) 
      #|<- creates list of rows suitable for 'writerows' 

results = open(r'C:\Python\Seema\result.csv', 'wb') 
#   ^prevents \r... from being read as a special character 
writer = csv.writer(results, dialect='excel') 
writer.writerows(result) 
results.close() 
+0

Моисей Я сделал это, но все же, я не получаю желаемого результата. –

+0

Каков желаемый результат? –

+0

Я хочу предложение в одном столбце и совпадающее слово во втором столбце –

Смежные вопросы