2014-11-26 4 views
2

В Python, как я могу импортировать данные, выглядит следующим образом:Python Импорт данных с несколькими разделителями

waveform [0] 
t0 26/11/2014 10:53:03.639218 
delta t 2.000000E-5 

time[0] Y[0] 
26/11/2014 10:53:03.639218 1.700977E-2 
26/11/2014 10:53:03.639238 2.835937E-4 
26/11/2014 10:53:03.639258 2.835937E-4 
26/11/2014 10:53:03.639278 -8.079492E-3 

Есть два разделителей, : и белое пространство. Я хочу избавиться от даты 24/11/2014 и удалить точки с запятой, чтобы массив time выглядел как 105303.639218 и т. Д. Итак, есть способ указать два разделителя в коде или есть лучший способ анализа данных?

До сих пор я получил:

import numpy as np 
import matplotlib.pyplot as plt 

_, time, y = np.loadtxt('data.txt', delimiter=':', skiprows=5) 
plt.plot(time,y) 
plt.show() 
+3

В самом общем смысле, используйте [Панды] (http://pandas.pydata.org/) – YXD

+0

Если это находится в строке, вы можете использовать [String.Split()] (http://msdn.microsoft.com/en-us/library/system.string.split%28v=vs.110%29.aspx) и передать это разделители, затем консолируйте список строк, возвращаемых, чтобы посмотреть, как вам нравится – mdw7326

ответ

0

Вы можете сделать это:

time = '10:34:20.454068' 
list_ = time.split(':') 
''.join(list_) 

# '103420.454068' 

для каждой строки.

0

Может быть, это своего рода окольным способ сделать это, но ...

import numpy as np 
import matplotlib.pyplot as plt 

mydata = np.loadtxt('data.txt', dtype='string', skiprows=5) 

time = mydata[:,1] 
time = np.array([s.replace(':','') for s in time]) 

y = np.array(mydata[:,2]) 

plt.plot(time,y) 

plt.show() 
Смежные вопросы