gpt4 book ai didi

python - 在 python 中使用 readlines?第一次

转载 作者:太空狗 更新时间:2023-10-29 21:40:32 24 4
gpt4 key购买 nike

我有一个包含数据列的文本文件,我需要将这些列转换为单独的列表或数组。这是我目前所拥有的

f = open('data.txt', 'r')
temp = []
for row in f.readlines():
Data = row.split()
temp.append(float(Data[0]))

当我运行它时,我得到 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

我需要第一列,如果可能的话,如下所示:数据 = [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

如果 IndexError 发生,这将打印出 Data - 你可以自己看到它打印了一个空列表:

f=open('file','r')
temp = []
for row in f.readlines():
Data = row.split()
try:
temp.append(float(Data[0]))
except IndexError:
print Data

您可以使用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'

编辑:你最好使用 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']

关于python - 在 python 中使用 readlines?第一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12996220/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com