Задать вопрос
@soveckii_fonarik
аспирант,начинающий программист - преподаватель

Как правильно считать данные из файла на python разного типа?

Добрый день. у меня есть небольшой класс по считыванию данных из файлов. В этом классе я считываю данные из файла, они предаставлены в .csv файле 2-мя строками таким образом

метан, этан, пропан, изобутан, бутан, изопентан, пентан, изогексан, гексан, изогептан, гептан, изооктан, октан, изононан, нонан
0, 0, 0, 0, 0, 0, 0, 21, 34, 60, 105, 128, 50, 80, 42

и в самом методе я пытаюсь считать данные и заменить названия элементов - числами, использую словарем
вот сам файл
spoiler
class loading_flle:
    '''
    класс по считыванию файлов
    '''
    def __init__(self):
        self.paraphine = {
            'метан': -161.5,
            'этан': -88.6,
            'пропан': -42.1,
            'бутан': -0.5,
            'изобутан': -11.7,
            'пентан': 36.1,
            'изопентан': 27.9,
            'неопентан': 9.5,
            'гексан': 68.73,
            'изогексан': 60.3,
            'демитилбутан': 49.7,
            'изогептан': 90,
            'гептан': 98.4,
            'метилгексан': 90.1,
            'этилпентан': 93.5,
            'диментилпентан': 79.2,
            'триптан': 80.9,
            'октан': 125.68,
            'метилгептан': 117.6,
            'деметилгексан': 106.8,
            'метил-3-этилпентан': 115.7,
            'изооктан': 109.8,
            'тетраметилбутан': 106.5,
            'изононан': 143.3,
            'нонан': 150.8,
            'декан': 174.1,
            'ундекан': 195.9,
            'додекан': 216.3,
            'эйкозан': 342.7,
            'тридекан': 235.4,
            'тетрадекан': 250,
            'водород': 252.9
        }
        self.data = []
        self.load_data_on_files()
    def load_data_on_files(self):
        '''
        метод считывающий исходные данные из файлов
        '''
        for file_filename in os.listdir(directory_load_file_csv):
            x, y = np.genfromtxt(directory_load_file_csv +
                                 file_filename, dtype='str', delimiter=', ')
            print(x[0])
            # x,y = np.loadtxt(directory_load_file_csv +
            #   file_filename, delimiter=',')
            for i, item in enumerate(x):
                x[i] = self.paraphine[x[i]]
            if len(x) != len(y):  # проверка данных
                print('разное количество данных! перепроверьте!!!!!!!')
            self.data.append([x, y])


но не совсем получается :\
выводит ошибку
x = self.paraphine[x]
KeyError: ‘метан’

может подсказать, как исправить ?
Отредактировано druidich92 (сегодня 15:33:33)
  • Вопрос задан
  • 156 просмотров
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 1
LaRN
@LaRN
Senior Developer
Возможно слово ‘метан’ в скрипте и в файле различаются но визуально этого не видно.
Я имею ввиду что какая-то из букв например английская.
Попробуйте заменить слово ‘метан’ в скрипте и в файле каким-то другим словом, например английской версией ‘methan’ и проверьте будет ли повторятся ошибка при выполнении скрипта.
А ещё, чтобы точно убедиться что все работает как задумано выведите через print(self.paraphine) содержимое словаря перед выполнением цикла, может что-то не так с ним.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы