Python 迭代问题';int';将for循环转换为while循环时的值

Python 迭代问题';int';将for循环转换为while循环时的值,python,Python,我的任务是创建一个程序,使用while循环从两个关键字之间的文本文件中提取数据,创建元组列表(日期作为列表,数据值作为整数) 例如 这是我将其转换为while循环的方法: def read_records_from_file(filename): """ bla """ mylist = [] line = open(filename).read() start = '<begin step data>' end = '<end st

我的任务是创建一个程序,使用while循环从两个关键字之间的文本文件中提取数据,创建元组列表(日期作为列表,数据值作为整数)

例如

这是我将其转换为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
def read_records_from_file(文件名):
“布拉”
mylist=[]
行=打开(文件名).read()
开始=“”
结束=“”
startpos=line.find(开始)+len(开始)
endpos=line.find(结束,开始)
数据=行[startpos:endpos]
mylist.append(data.split())
所需=[]
元素=0
而元素

但是这给了我一个错误,
“int”对象没有属性“split”
。我很困惑,将其更改为while循环是如何让它将其读取为
int
,而不是
列表

For
语句可以在
while
中转换为:

element = 0
while element < len(mylist[0]):
    data = mylist[0][element].split(',')
    desired.append((data[0],int(data[1]))) 
    element += 1

您还可以使用此代码生成输出。

包含整数值的元素。您不能拆分int值。那么为什么它作为for循环工作?因为在for循环中您没有提到元素=0。在for循环中,它为mylist[0]中的元素获取实际数据:这句话的意思是包含实际数据的元素(一个接一个),而不是索引。我已经更新了我的答案,以便使用whileSorry!我忘了重要的一点,数据值必须是整数,日期应该保留为列表。非常感谢!看来我需要研究一下while循环@JayDilla:你可以很容易地将字符串转换成int。检查我更新的答案
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
element = 0
while element < len(mylist[0]):
    data = mylist[0][element].split(',')
    desired.append((data[0],int(data[1]))) 
    element += 1
>>> 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