![](/img/trans.png)
[英]Skipping over the first line of a text file using readlines() in python
[英]Using readlines in python? First time
我有一個包含數據列的文本文件,我需要將這些列轉換為單獨的列表或數組。 這就是我到目前為止所擁有的
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']
用於文件處理程序。
with open('path/to/file', 'r') as f:
for line in f:
# code.
您指數錯誤來自試圖訪問Data
在[0]
位置。 這只是意味着你的線是空的。
你應該在分析線之前快速檢查一下......
if len(Data):
#code
else:
#empty line?
f = open('data.txt', 'r')
temp = []
for row in f.readlines():
items = row.split(',')
temp.append(unicode(items[0]))
我希望它能解決你的問題。
def cal(num_list):
x = 1;
z = 0;
while True:
list1 = list(str(x))
list2 = [int(a) for a in list1]
for i in range(len(list2)):
for j in range(10):
if(list2.count(j) > num_list[list2[i]]):
z = 1;
break;
if(z == 1):
save(x);
break;
x = x + 1;
#matrix A to B
def show():
global string_final,list_2,tot
index=matrix_1.index(num) # finding index of num
length=n
j=(index)%length # the column positon
i=index/length # the row position
list_1=[]
for a in range(length):
lis=[]
for b in range(length):
lis.append(matrix_1.pop(0)) #pop the first element and append the list
list_1.append(lis)
tot=0
list_2=[]
for a in range(i+1):
for b in range(j+1):
tot=tot+list_1[a][b] # add the numbers
list_2.append(list_1[a][b]) #append to list
if(b!=length):
list_2.append(" ") #append space
list_2.append("\n")
string_final="".join([str(a) for a in list_2]) #list to string
print "matrix B\n",string_final,"\nx: ",str(num),"\nn: ",str(n)+"\ntotal: "+str(tot) # print the result
#matrix add zero
def get():
global b_no
num_list=[];
file=open("matrix.txt","r");
for i in file:
b_no=0
if(len(i.split())==1): #check length is 1 or not
n=int(i)#string to int
else:
temp=i.split();
if(len(temp)!=n):
b_no+=1
break
temp=[0]+[int(a) for a in temp]+[0] #add zero at first and last
num_list.append(temp);
zero_list=[]
for i in range(n+2):
zero_list.append(0) #append zero
num_list.insert(0,zero_list)
num_list.insert(n+1,zero_list)
return num_list,n;
我會避免使用Data [0]或row [0],而是使用''.join(Data)或'.join(row)來避免空列表(列表索引超出范圍錯誤)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.