[英]Problems with iterating 'int' values when converting for loop to while loop
我的任務是創建一個程序,該程序使用while循環從文本文件中的2個關鍵字之間提取數據,並創建一個元組列表(日期作為列表,數據值作為整數)
例如
<begin step data>
2001-01-01,12776
2001-01-02,15128
<end step data>
將其提取為[('2001-01-01', 12776), ('2001-01-02', 15128)]
格式
我首先使用for
循環來解決它,以使其變得更容易,最后得到了這段代碼,為我提供了正確的答案:
def read_records_from_file(filename):
""" bla """
mylist = []
line = open(filename).read()
start = '<begin step data>'
end = '<end step data>'
startpos = line.find(start) + len(start)
endpos = line.find(end, startpos)
data = line[startpos:endpos]
mylist.append(data.split())
desired = []
for element in mylist[0]:
element = element.split(',')
desired.append((element[0],int(element[1])))
return desired
這是將其轉換為while循環的方法:
def read_records_from_file(filename):
""" bla """
mylist = []
line = open(filename).read()
start = '<begin step data>'
end = '<end step data>'
startpos = line.find(start) + len(start)
endpos = line.find(end, startpos)
data = line[startpos:endpos]
mylist.append(data.split())
desired = []
element = 0
while element < len(mylist[0]):
element = element.split(',')
desired.append((element[0],int(element[1])))
element += 1
return desired
但這給了我一個錯誤的'int' object has no attribute 'split'
。 我很困惑如何將其更改為while循環,使它將其讀取為int
而不是list
。
For
語句可以在while
轉換為:
element = 0
while element < len(mylist[0]):
data = mylist[0][element].split(',')
desired.append((data[0],int(data[1])))
element += 1
您可以嘗試使用Python方式:
>>> data = "2001-01-01,12776 2001-01-02,15128"
>>> data = data.split()
>>> print data
['2001-01-01,12776', '2001-01-02,15128']
>>> final_data = []
>>> for d in data:
temp = tuple(d.split(","))
temp_tuple = (temp[0],int(temp[1]))
final_data.append(temp_tuple)
>>> print final_data
[('2001-01-01', '12776'), ('2001-01-02', '15128')]
st = "2001-01-01,12776 2001-01-02,15128"
final_list = []
for elem in st.split():
date = elem.split(",")[0]
data = elem.split(",")[-1]
final_list.append((date, int(data)))
print final_list
您也可以使用此代碼生成輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.