Python 如何将文件中的字符串数据转换为公式的整数形式

Python 如何将文件中的字符串数据转换为公式的整数形式,python,Python,我根据得分、分钟数、罚球和效率排名NBA前10名篮球运动员。现在除了效率,所有排名都有效 我在运行函数时出错: formula = (player[17] - player[18]) + player[13]))/(player[4])) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 main() 文件“C:/Users/panda/OneDrive/Desktop/combiness/CS HW 9/pa09.py”,第68行,主文件 effList=效率(主数据列表) 文件“C:/

我根据得分、分钟数、罚球和效率排名NBA前10名篮球运动员。现在除了效率,所有排名都有效

我在运行函数时出错:

formula = (player[17] - player[18]) + player[13]))/(player[4]))
回溯(最近一次呼叫最后一次): 文件“”,第1行,在 main() 文件“C:/Users/panda/OneDrive/Desktop/combiness/CS HW 9/pa09.py”,第68行,主文件 effList=效率(主数据列表) 文件“C:/Users/panda/OneDrive/Desktop/combiness/CS HW 9/pa09.py”,第55行,效率 公式=((玩家[6]+玩家[9]+玩家[10]+玩家[11]+玩家[12])-((玩家[15]-玩家[16])+(玩家[17]-玩家[18])+玩家[13])/(玩家[4])) TypeError:-:“str”和“str”的操作数类型不受支持

这是我的密码:

def readData(filename):

    inputFile = open(filename, 'r')

    inputFile.readline()

    master_data_list = []

    for line in inputFile:
        master_data_list.append(line.split(","))

    return master_data_list

def efficiency(master_data_list):

    effList = []

    for player in master_data_list:
        formula = (player[17] - player[18]) + player[13]))/(player[4]))
        index = (player[1], player[2], formula)
        effList.append(formula)

    return effList

def main():

    master_data_list = readData("player_career.csv")

    effList = efficiency(master_data_list)
    effList = sorted(effList, key = lambda x: int(x[2]), reverse = True)

    print("Top 10 players based on total efficiency.")
    for line in effList[:10]:
        print(line[0], line[1]+"-"+line[2])
    print()
以下是输入文件的示例:

ID  firstname   lastname    leag    gp  minutes pts oreb    dreb    reb asts    stl blk turnover    pf  fga fgm fta ftm tpa tpm
ABDELAL01   Alaa    Abdelnaby   N   256 3200    1465    283 563 846 85  71  69  247 484 1236    620 321 225 3   0
ABDULKA01   Kareem  Abdul-jabbar    N   1560    57446   38387   2975    9394    17440   5660    1160    3189    2527    4657    28307   15837   9304    6712    18  1

迭代每个字段,如果可以,将其设置为
int

改变

for line in inputFile:
    master_data_list.append(line.split(","))


列表理解可以扩展为:


如果确定字段格式,则知道前四个是字符串,其余是整数:

for line in inputFile:
    line = line.strip().split(",")
    line = line[:4] + [int(thing) for thing in line[4:]]
    master_data_list.append(line)

你一定在尝试减去字符串。你能把它简化为一个(强调最小值)吗?当询问产生异常的代码时,一定要在问题中包含完整的回溯。复制回溯并粘贴到问题中,然后将其格式化为代码(选择并键入ctrl-k)。请不要发布代码/数据/回溯的图像。只需复制文本,将其粘贴到问题中,并将其格式化为代码。我粘贴了数据示例,并尝试对其进行简化,这样您就不会有太多需要查看的内容。示例代码表示逗号分隔的字段,但示例数据是以空格分隔的。
row = []
for thing in line:
    if thing.isdigit():
        thing = int(thing)
    row.append(thing)
for line in inputFile:
    line = line.strip().split(",")
    line = line[:4] + [int(thing) for thing in line[4:]]
    master_data_list.append(line)