Найти - Пользователи
Полная версия: .dat в Python
Начало » Центр помощи » .dat в Python
1
sevvvich
Доброго времени суток!
Есть .dat файл с несколькими колонками числовых данных (если важно, сохранен из программы Origin).
Можно ли эти данные импортировать численно в массивы и как это сделать?
Искал способы и в рунете, и не в нем, но как-то везде сумбурно, а у меня еще и не работает почему-то ничего.
Буду очень благодарен!
py.user.next
Пример файла приложи к сообщению.
doza_and
sevvvich
и не работает почему-то ничего.
:) перечислите это все.
Для питона понятие импортировать в массивы понятие очень растяжимое.
import numpy as np
r=np.loadtxt("a.dat")
надо инсталлировать пакет numpy
http://www.lfd.uci.edu/~gohlke/pythonlibs/
sevvvich
вот файлик
doza_and
>>> 
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.
и много многое другое…

Или переставить настройки ОС, так чтобы потакать зловредной американской привычке отделять дробную часть от целой точкой.
JOHN_16
sevvvich
Питон использует символ точки в качестве разделителя дробной части в числах. У вас в файле запятая. Значит нужно как минимум заменить ее на точку.
Если файлы не большие, то хватит и такого примера:
text = open('datafile123.dat').read().replace(',', '.')
data = [float(line) for line in text.splitlines()]
ZerG
если небольшие….
А если большие то надо их пихать в БД
py.user.next
sed -i~ 's/,/./g' file.dat
doza_and
sevvvich
сохранен из программы Origin
Если правильно понимаю Origin это рисовалка графиков. там можно конечно вычисления над столбцами делать, но не более того. Значит у вас есть текстовый файл с исходными данными, которые вы импортировали в Origin. Читайте их. Исключите Origin из обработки данных.

Ну и конечно рекомендую изменить настройки ОС так чтобы разделитель в числах был точка. Иначе и дальше ничего не будет работать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB