Уведомления

Группа в Telegram: @pythonsu

#1 Март 10, 2016 21:57:28

sevvvich
Зарегистрирован: 2016-03-10
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

.dat в Python

Доброго времени суток!
Есть .dat файл с несколькими колонками числовых данных (если важно, сохранен из программы Origin).
Можно ли эти данные импортировать численно в массивы и как это сделать?
Искал способы и в рунете, и не в нем, но как-то везде сумбурно, а у меня еще и не работает почему-то ничего.
Буду очень благодарен!

Офлайн

#2 Март 11, 2016 01:03:00

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

.dat в Python

Пример файла приложи к сообщению.



Офлайн

#3 Март 11, 2016 07:29:57

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

.dat в Python

sevvvich
и не работает почему-то ничего.
:) перечислите это все.
Для питона понятие импортировать в массивы понятие очень растяжимое.
import numpy as np
r=np.loadtxt("a.dat")
надо инсталлировать пакет numpy
http://www.lfd.uci.edu/~gohlke/pythonlibs/



Офлайн

#4 Март 21, 2016 20:27:37

sevvvich
Зарегистрирован: 2016-03-10
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

.dat в Python

вот файлик

Прикреплённый файлы:
attachment datafile123.dat (4,0 KБ)

Офлайн

#5 Март 21, 2016 21:05:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

.dat в Python

>>> 
Traceback (most recent call last):
  File "<editor selection>", line 2, in <module>
  File "C:\comp\Python27\lib\site-packages\numpy\lib\npyio.py", line 853, in loadtxt
    items = [conv(val) for (conv, val) in zip(converters, vals)]
ValueError: invalid literal for float(): 0,500025
Что тут скажешь.
Разработчики ОС Windows решили что в формате плавающих чисел очень важно соответствовать региональным стандартам. Для России. разделитель запятая.

У вас есть два пути.
Быть патриотом, но
- быть не в состоянии прочитать данные программой написанной практически на любом языке программирования (включая конечно и питон), это правда не беда, поскольку нельзя будет написать программу использующую плавающие числа.
- генерировать файлы которые будут непонятны всем остальным людям.
- терять данные при перестановке ОС
- отказать себе в удовольствии пользоваться распространенными форматами данных csv, json, xml, yaml.
и много многое другое…

Или переставить настройки ОС, так чтобы потакать зловредной американской привычке отделять дробную часть от целой точкой.



Отредактировано doza_and (Март 21, 2016 21:08:41)

Офлайн

#6 Март 21, 2016 21:08:03

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

.dat в Python

sevvvich
Питон использует символ точки в качестве разделителя дробной части в числах. У вас в файле запятая. Значит нужно как минимум заменить ее на точку.
Если файлы не большие, то хватит и такого примера:

text = open('datafile123.dat').read().replace(',', '.')
data = [float(line) for line in text.splitlines()]



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Март 21, 2016 21:58:49

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

.dat в Python

если небольшие….
А если большие то надо их пихать в БД



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#8 Март 22, 2016 00:43:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

.dat в Python

sed -i~ 's/,/./g' file.dat



Отредактировано py.user.next (Март 22, 2016 00:45:06)

Офлайн

#9 Март 22, 2016 06:15:58

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

.dat в Python

sevvvich
сохранен из программы Origin
Если правильно понимаю Origin это рисовалка графиков. там можно конечно вычисления над столбцами делать, но не более того. Значит у вас есть текстовый файл с исходными данными, которые вы импортировали в Origin. Читайте их. Исключите Origin из обработки данных.

Ну и конечно рекомендую изменить настройки ОС так чтобы разделитель в числах был точка. Иначе и дальше ничего не будет работать.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version