我有一个包含数据列的文本文件,我需要将这些列转换为单独的列表或数组.这就是我到目前为止所拥有的
f = open('data.txt', 'r')
temp = []
for row in f.readlines():
Data = row.split()
temp.append(float(Data[0]))
Run Code Online (Sandbox Code Playgroud)
当我跑这个我得到IndexError: list index out of range
.
下面的数据片段:
16 0.2000
17 0.3000
18 0.4000
20 0.5000
21 0.6000
22 0.7000
24 0.8000
25 0.9000
26 1.000
Run Code Online (Sandbox Code Playgroud)
我需要第一列,如果可能的话,看起来像这样:数据= [16,17,18,20,21,22,24,25,26]
Data=[]
如果您读取空行,则会获得一个空列表.你试图从列表中获取第一个元素Data[0]
,但因为它是一个空列表,它在位置0没有元素,所以你得到一个IndexError
.
Data=''.split()
Data[0]
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-686-0792b03cbbdf> in <module>()
----> 1 Data[0]
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)
这将打印Data
if IndexError
ifours - 您可以看到自己打印一个空列表:
f=open('file','r')
temp = []
for row in f.readlines():
Data = row.split()
try:
temp.append(float(Data[0]))
except IndexError:
print Data
Run Code Online (Sandbox Code Playgroud)
您可以使用该with
语句打开文件,该文件在处理后自动关闭文件.您也可以不使用而循环遍历文件本身readlines()
.
with open(file,'r') as f:
for row in f:
Data = row.split()
try:
print Data[0]
except IndexError:
print 'You have an empty row'
Run Code Online (Sandbox Code Playgroud)
编辑:你最好使用csv模块:
import csv
with open('file.csv', 'rb') as f:
reader = csv.reader(f, delimiter=' ')
print [row[0] for row in reader if len(row)]
>>>
['16', '17', '18', '20', '21', '22', '24', '25', '26']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
35837 次 |
最近记录: |