在Python中拆分.dat文件进行绘图

时间:2015-02-23 16:24:41

标签: python plot split

我有一个.dat文件,我想在文件中绘制一些数据。我使用nom1 = open('file1.dat','rb').readlines()[3:]

删除了文件的前几行

删除行后,.dat文件看起来像这样:

Flow  2012  9 22 24  0  230.0000      354.0856
Flow  2012  9 23 24  0  231.0000      353.0887
Flow  2012  9 24 24  0  236.0000      357.0877
Flow  2012  9 25 24  0  235.0000      358.0837

总共应该有8列,但是它将每行读作一大组字母和数字。我想绘制时间,这是在"列" 2,3和4(例如2012/9/22),针对第7列和第8列。我考虑使用拆分函数nom2=nom1.split(),但我收到错误AttributeError: 'list' object has no attribute 'split'。下一个想法是尝试使用白色空间描绘,但没有真正的好主意如何去做。如果有更快更有效的方法,请告诉我。另外,如果我太模糊,请告诉我。

由于

2 个答案:

答案 0 :(得分:1)

>>> file = open(r"class X.txt")
>>> type(file.readlines())
<class 'list'>

所以readlines返回一个列表?因此很明显,对它进行切片表示法将跳过列表中的前3项。但是那份清单究竟是什么?

>>> for line in file.readlines():
    print(type(line))   
<class 'str'>
<class 'str'>
<class 'str'>
<class 'str'>

因此每行都作为单独的字符串读入!这意味着[3:]将跳过文件中的第3行,而不是列。好的,但我们怎样才能获得实际的列?

>>> for line in file.readlines():
    print(line.split())  
['Flow', '2012', '9', '22', '24', '0', '230.0000', '354.0856']
['Flow', '2012', '9', '23', '24', '0', '231.0000', '353.0887']

好的,到达那里,我们只是将每个字符串(行)拆分为存储在列表中的多个字符串。现在我们可以通过[3:]跳过前3列。我们需要某处来保存它。如何列出每个元素是我们需要的列的列表?

>>> interesting = []
>>> for line in file.readlines():
    interesting.append(line.split()[3:])
>>> interesting
[['22', '24', '0', '230.0000', '354.0856'], ['23', '24', '0', '231.0000', '353.0887'], ['24', '24', '0', '236.0000', '357.0877'], ['25', '24', '0', '235.0000', '358.0837']]
>>> interesting[0]
['22', '24', '0', '230.0000', '354.0856']
我们去了,我们去了。想一想,希望它能让自己完全清楚。

答案 1 :(得分:0)

先读取csv文件,然后拆分。

{{1}}