Python 如何将文件中的字符串数据转换为公式的整数形式
我根据得分、分钟数、罚球和效率排名NBA前10名篮球运动员。现在除了效率,所有排名都有效 我在运行函数时出错: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:/
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)