Запись словаря в csv работает с файлом из UbuntuVM, но не из Windows - PullRequest
0 голосов
/ 29 марта 2020
from sys import argv
from PyDictionary import PyDictionary
import csv

name, filename = argv

d = PyDictionary()

csv_columns = ['Word', 'Noun', 'Verb', 'Adjective', 'Adverb']
csv_file = 'trans_test.csv'
try:
    with open(csv_file, 'w+') as f:
        with open(filename, 'r') as g:
            w = csv.DictWriter(f, fieldnames = csv_columns)
            w.writeheader()
            for i in g:
                word = (i.split(' ')[0])
                dict1 = d.meaning(word)
                dict1['Word'] = word
                w.writerow(dict1)
except IOError:
    print('I/O error')

Я получаю ошибки:

Erorr: The Following Error occured: list index out of range
Traceback (most recent call last):
File "my_trans.py", line 19 in module<>
dict1['Word'] = word
TypeError: 'NoneType' object does not support item assignment

Я пытаюсь извлечь первое слово из каждой строки в текстовом файле, получить определения этого слова, поместите его в словарь, добавьте это слово с ключевым словом «Word» в этот словарь и запишите его в файл CSV.

Что я пробовал и проверял :

-dict1 - это NoneType, я не знаю почему - однако, когда я помещаю dict1 = d.meaning(word) вне попытки, кроме dict1 - это словарь

-Я работаю над UbuntuVM, и когда я Я создаю файл file.txt со словами на ВМ, скрипт работает, но когда я принес файл, созданный в блокноте, на Windows, я получаю эту ошибку

- если я записываю содержимое файла вниз в UbuntuVM скрипт работает, но если я копирую содержимое файла, извлеченного из Windows, в файл в Ubuntu, он также не работает

-файл из Windows Блокнот сохраняется с utf-8

file.txt выглядит так:

renowned - (known or talked about by many people; famous)
prevalent - (widespread in a particular area at a particular time)
lesion - 
aneurysm - (an excessive localized enlargement of an artery caused by a weakening of the artery wall)
ischemic - 
juvenile - 
ashen - (of the pale gray color of ash)
inflammation - 
conned - 
intermittent - (occurring at irregular intervals; not continuous or steady)
mild - 

1 Ответ

0 голосов
/ 29 марта 2020

PyDictionary.meaning соскоб http://wordnetweb.princeton.edu, чтобы получить определение. Похоже, что происходит то, что он не может получить ожидаемое содержимое, и это вызывает ошибку в PyDictionary:

Ошибка: Произошла следующая ошибка: индекс списка вне диапазона

В этой ситуации PyDictionary.meaning возвращает None, что вызывает ошибку TypeError, которую вы видите.

Это может быть временная проблема или что-то в вашем Windows среда, которая вызывает ошибку.

...