我已经设置了创建程序的任务,该程序使用while循环从两个关键字之间的文本文件中提取数据,创建一个元组列表(日期为列表,数据值为整数)< / p>
E.g。
<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
进行读取。
答案 0 :(得分:2)
For
语句可以在while
中转换为:
element = 0
while element < len(mylist[0]):
data = mylist[0][element].split(',')
desired.append((data[0],int(data[1])))
element += 1
你可以试试Pythonic方式:
>>> 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')]
答案 1 :(得分:0)
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
您也可以使用此代码生成输出。