将元组中的第二个元素转换为整数

时间:2017-09-11 10:52:49

标签: python list tuples element

我试图摆脱每个元组的第二个元素中的''。

我的代码是

def read_records_from_file(filename):
    final_list = []
    infile=open(filename)
    lines=infile.readlines()
    i = 0
    while i < len(lines):
        element = lines[i]
        i += 1
        if element.strip() == '<begin step data>':
            break

    while i < len(lines):       
        element = lines[i]
        clean_element = element.rstrip("\n")
        list = clean_element.split(",")
        tuple1 = tuple(list)
        i += 1
        if element.strip() == '<end step data>':
            break         
        final_list.append(tuple1)
    return final_list

我的代码给了我

[('2001-01-01', '12776'), ('2001-01-02', '15128')]

但我需要

[('2001-01-01', 12776), ('2001-01-02', 15128)]

我不确定如何只将每个元组的第二个元素更改为整数。

注意:我不允许使用for循环

非常感谢任何帮助谢谢!

1 个答案:

答案 0 :(得分:2)

您必须将第二个tuple条目转换为int数据类型,而不是使用string表示形式(这会为您提供引号):

 list = clean_element.split(",")
 tuple1 = (list[0], int(list[1]))

编辑:请将这些行移到第二个while循环的开头:

element = lines[i]
if element.strip() == '<end step data>':
    break   

解决你的第二个问题。

最后,您会得到以下代码:

def read_records_from_file(filename):
    final_list = []
    infile=open(filename)
    lines=infile.readlines()

    for i in range(len(lines)):  
        element = lines[i]
        clean_element = element.rstrip("\n").strip()
        if clean_element == '<end step data>':
            break     

        list = clean_element.split(",")
        tuple1 = tuple(list)

        final_list.append(tuple1)
    return final_list