Python 如何从文件中找到句子中的最大数字,然后打印出来?
我只是想知道如何在一个句子中找到最大的数字,然后打印出来,因为我正在做一个项目,其中包括输入球员的名字和他们得到的分数。文件格式如下:玩家1(用户名)得了20分。我不知道这是否正确,但可能与此有关Python 如何从文件中找到句子中的最大数字,然后打印出来?,python,Python,我只是想知道如何在一个句子中找到最大的数字,然后打印出来,因为我正在做一个项目,其中包括输入球员的名字和他们得到的分数。文件格式如下:玩家1(用户名)得了20分。我不知道这是否正确,但可能与此有关 numbers = [1,2,3,4,5,6,7] print('The biggest number is: ' + str(max(s))) 但我需要它,以便它从文件中的句子中获取最大的数字,并且文件格式类似于“john有58个点”。此代码将从文件“data”中读取数据,并使用您提供的格式将其内
numbers = [1,2,3,4,5,6,7]
print('The biggest number is: ' + str(max(s)))
但我需要它,以便它从文件中的句子中获取最大的数字,并且文件格式类似于“john有58个点”。此代码将从文件“data”中读取数据,并使用您提供的格式将其内容转换为python dict:(player)has(points)points,然后找到得分最高的玩家,打印该玩家的名字和分数
import operator
file = open('data', 'r')
file_content = file.read().splitlines()
file.close()
users_points = {i.split()[0]: int(i.split()[2]) for i in file_content}
best_player = max(users_points.items(), key=operator.itemgetter(1))[0]
print('player with maximum points is {}, this player has {} points'.format(best_player, users_points[best_player]))
print(sorted(users_points.values())) # This will print points of all players
功能证明:
s = '''john has 58 points
bob has 46 points
fred has 0 points
leo has 27 points
max has 34 points'''
import operator
file_content = s.splitlines() # no file available here, but result is the same
users_points = {i.split()[0]: int(i.split()[2]) for i in file_content}
best_player = max(users_points.items(), key=operator.itemgetter(1))[0]
print('player with maximum points is {}, this player has {} points'.format(best_player, users_points[best_player]))
print(sorted(users_points.values())) # This will print points of all players
best_players = sorted(users_points, key=users_points.get, reverse=True)
for bp in best_players:
print('{} has {} points'.format(bp, users_points[bp]))
导致输出:
player with maximum points is john, this player has 58 points
[0, 27, 34, 46, 58]
john has 58 points
bob has 46 points
max has 34 points
leo has 27 points
fred has 0 points
此代码将从文件“data”中读取数据,并使用您提供的格式将其内容转换为python dict:(player)有(points)点,然后找到点数最多的player并打印该player名称和他的点
import operator
file = open('data', 'r')
file_content = file.read().splitlines()
file.close()
users_points = {i.split()[0]: int(i.split()[2]) for i in file_content}
best_player = max(users_points.items(), key=operator.itemgetter(1))[0]
print('player with maximum points is {}, this player has {} points'.format(best_player, users_points[best_player]))
print(sorted(users_points.values())) # This will print points of all players
功能证明:
s = '''john has 58 points
bob has 46 points
fred has 0 points
leo has 27 points
max has 34 points'''
import operator
file_content = s.splitlines() # no file available here, but result is the same
users_points = {i.split()[0]: int(i.split()[2]) for i in file_content}
best_player = max(users_points.items(), key=operator.itemgetter(1))[0]
print('player with maximum points is {}, this player has {} points'.format(best_player, users_points[best_player]))
print(sorted(users_points.values())) # This will print points of all players
best_players = sorted(users_points, key=users_points.get, reverse=True)
for bp in best_players:
print('{} has {} points'.format(bp, users_points[bp]))
导致输出:
player with maximum points is john, this player has 58 points
[0, 27, 34, 46, 58]
john has 58 points
bob has 46 points
max has 34 points
leo has 27 points
fred has 0 points
熊猫的解决方案:
import pandas as pd
假设文件看起来像
john has 58 points
bob has 46 points
fred has 0 points
leo has 27 points
max has 34 points
导入很简单,可以自动处理基本类型转换
df = pd.read_table(filename, sep=' ', usecols=[0,2], names=['name', 'points'])
一旦分类
srtd_data = df.sort_values('points', ascending=False)
您的所有请求都很容易实现:获胜者名单及其得分:
srtd_data.loc[0].values
['john' 58]
已排序的所有点的列表:
srtd_data.points.values
[58 46 34 27 0]
分类句子:
srtd_data.apply(lambda x: '{} has {} points'.format(x[0], x[1]), axis=1))
0 john has 58 points
1 bob has 46 points
4 max has 34 points
3 leo has 27 points
2 fred has 0 points
dtype: object
熊猫的解决方案:
import pandas as pd
假设文件看起来像
john has 58 points
bob has 46 points
fred has 0 points
leo has 27 points
max has 34 points
导入很简单,可以自动处理基本类型转换
df = pd.read_table(filename, sep=' ', usecols=[0,2], names=['name', 'points'])
一旦分类
srtd_data = df.sort_values('points', ascending=False)
您的所有请求都很容易实现:获胜者名单及其得分:
srtd_data.loc[0].values
['john' 58]
已排序的所有点的列表:
srtd_data.points.values
[58 46 34 27 0]
分类句子:
srtd_data.apply(lambda x: '{} has {} points'.format(x[0], x[1]), axis=1))
0 john has 58 points
1 bob has 46 points
4 max has 34 points
3 leo has 27 points
2 fred has 0 points
dtype: object
您可以这样做:
f = open("file.txt","r")
lines = list(f) #create a list of strings
f.close() #don't forget to close our files when we're done. It's good practice.
modified_lines = [] #empty list to put our modified lines in (extracted number, original line)
for line in lines: #iterate over each line
if line.strip(): #if there's anything there after we strip away whitespace
score = line.split(' ')[2] #split our text on every space and take the third item
score = int(score) #convert the string of our score into a number
modified_lines.append([score, line]) #add our modified line to modified_lines
#sort our list that now has the thing we want to sort based on is first
sorted_modified_lines = sorted(modified_lines, reverse = True )
#take only the string (not the number we added before) and print it without the trailing newline.
for line in sorted_modified_lines:
print(line[1].strip()+"\n")
您可以这样做:
f = open("file.txt","r")
lines = list(f) #create a list of strings
f.close() #don't forget to close our files when we're done. It's good practice.
modified_lines = [] #empty list to put our modified lines in (extracted number, original line)
for line in lines: #iterate over each line
if line.strip(): #if there's anything there after we strip away whitespace
score = line.split(' ')[2] #split our text on every space and take the third item
score = int(score) #convert the string of our score into a number
modified_lines.append([score, line]) #add our modified line to modified_lines
#sort our list that now has the thing we want to sort based on is first
sorted_modified_lines = sorted(modified_lines, reverse = True )
#take only the string (not the number we added before) and print it without the trailing newline.
for line in sorted_modified_lines:
print(line[1].strip()+"\n")
这太宽泛了。你试过什么?你具体需要什么帮助?好的,那么如何用一个句子中最大的数字来打印这个句子,例如约翰得了58分,鲍勃得了46分这太宽泛了。你试过什么?你具体需要什么帮助?好的,那么如何用一个句子中最大的数字来打印这个句子,例如john得了58分bob得了46分感谢这一点,我还有另一个问题,你怎么做才能把所有的分数按顺序打印出来。最高分数到最低分数打印(排序(users_points.values()))将这一行添加到脚本末尾,以按升序打印所有值。您如何使它不仅按顺序打印值,而且还打印带有句子的分数,例如(john有58分),然后在它下面说第二高分(bob得了46分)最佳玩家=已排序(users\u points,key=users\u points.get,reverse=True)通过这种方式,您可以按分数对所有球员的姓名进行排序,只需打印他们和他们在用户点解决方案中的分数,特别是使用
操作符
,这是我以前从未听说过的。我必须查看它。+1感谢这一点,我还有另一个问题,您将如何制作,以便将所有分数都打印出来按顺序。最高分数到最低分数打印(排序(users_points.values()))将这一行添加到脚本末尾,以按升序打印所有值。您如何使它不仅按顺序打印值,而且还打印带有句子的分数,例如(john有58分),然后在它下面显示第二高分(bob得了46分)最佳玩家=已排序(users\u points,key=users\u points.get,reverse=True)通过这种方式,你可以将所有球员的名字按分数排序,只需打印他们和他们的分数,这是在用户点解决方案中,特别是使用操作符,这是我以前从未听说过的。我必须看看它。+1如果没有熊猫,这是可能的,因为我的学校没有熊猫,你也可以检查代码,因为我得到一个错误也可以你在最后把所有的代码都写在一起,当然没有熊猫也是可能的。看看Filip Młynarski的解决方案就知道了。我在发布代码之前测试了代码,它是有效的。每个命令下面的结果实际上都是每个命令的真实结果。如果你出现错误并且不知道如何调试程序,nobody可以帮助您,如果您至少不共享(完整)错误信息。不,对不起,为什么我要把所有的代码都复制粘贴到最后呢?如果没有熊猫,这可能吗?因为我的学校没有熊猫。你也可以检查代码吗?因为我有一个错误,你也可以在最后把所有的代码都写在一起吗łynarski。在发布代码之前,我对代码进行了测试,它是有效的。每个命令下面的结果实际上都是每个命令的真实结果。如果您出现错误并且不知道如何调试程序,如果您至少不共享(完整的)错误消息,没有人可以帮助您。不,对不起,为什么我要再次复制并粘贴所有代码到末尾?