Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从文件中找到句子中的最大数字,然后打印出来?_Python - Fatal编程技术网

Python 如何从文件中找到句子中的最大数字,然后打印出来?

Python 如何从文件中找到句子中的最大数字,然后打印出来?,python,Python,我只是想知道如何在一个句子中找到最大的数字,然后打印出来,因为我正在做一个项目,其中包括输入球员的名字和他们得到的分数。文件格式如下:玩家1(用户名)得了20分。我不知道这是否正确,但可能与此有关 numbers = [1,2,3,4,5,6,7] print('The biggest number is: ' + str(max(s))) 但我需要它,以便它从文件中的句子中获取最大的数字,并且文件格式类似于“john有58个点”。此代码将从文件“data”中读取数据,并使用您提供的格式将其内

我只是想知道如何在一个句子中找到最大的数字,然后打印出来,因为我正在做一个项目,其中包括输入球员的名字和他们得到的分数。文件格式如下:玩家1(用户名)得了20分。我不知道这是否正确,但可能与此有关

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。在发布代码之前,我对代码进行了测试,它是有效的。每个命令下面的结果实际上都是每个命令的真实结果。如果您出现错误并且不知道如何调试程序,如果您至少不共享(完整的)错误消息,没有人可以帮助您。不,对不起,为什么我要再次复制并粘贴所有代码到末尾?