File reading only first digit of a number rather than the whole number

Question:

The problem is that i have a text file with each line being
PlayerName wins with x points
with each player name and number being different and obviously with them being different are different number if digits long
Problem is as a part of the code it needs to read the entire code and print the players with the top 5 scores as such.

TOP 5 ALL TIME SCORES

Martin wins with 123 points

Jamie wins with 54 points

Kyle wins with 43 points

Andrew wins with 32 points

Dylan wins with 21 points

(The full code is a dice game with random rolling and a gambling system and tiebreaker but im at my dads house right now so dont have access to the full code)

`





name = str(input("Player 1 name"))
name2 = str(input("Player 2 name"))
score = str(input("Player 1 score"))
score2 = str(input("Player 2 score"))
text_file = open("CH30.txt", "r+")
if score > score2:
    content = text_file.readlines(30)
    if len(content) > 0 :
        text_file.write("n")
    text_file.write(name)
    text_file.write (" wins with ")
    text_file.write (score)
    text_file.write (" points")
else:
    content = text_file.readlines(30)
    if len(content) > 0 :
        text_file.write("n")
    text_file.write (name2)
    text_file.write (" wins with ")
    text_file.write (score2)
    text_file.write (" points")


text_file = open('CH30.txt.', 'r')
Lines = text_file.readlines()
PlayersScores = []

# read each line get the player name and points 
for line in Lines:
    # split the line into list of strings
    line = line.split(" ")
    # removing n from last element
    line[-1] = line[-1].replace("n", "")
    print(line)
    # find player name position
    playerName = line.index("wins") - 1
    # find points position
    points = line.index("points") - 1
    points = int(points)
    # add the tuple (playerName, points) in a list
    PlayersScores.append((line[playerName], line[points]))
# descending order sort by player score
PlayersScores = sorted(PlayersScores, key=lambda t: t[1], reverse=True)

# get the first 5 players
print("Highest Scores:n")
for i in range(5):
    print(str(i+1) + ". " + PlayersScores[i][0] + " " + PlayersScores[i][1] + " points")


`
the output for this is

Jamie wins with 54 points

Kyle wins with 43 points

Andrew wins with 32 points

Dylan wins with 21 points

Martin wins with 123 points

note The names shown are just an example actually it reads from a text file (CH30.txt) rather than just 5 preselected names

Any help greatly appreciated
Thanks

Asked By: Jamie Cooper

||

Answers:

import re
parsed_num = re.findall(r'd+', line) # will extract only numbers from line
points = int(''.join(parsed_num))
PlayersScores.append((line[playerName], points))

didnt work have i done it correctly?

name = str(input("Player 1 name"))
name2 = str(input("Player 2 name"))
score = str(input("Player 1 score"))
score2 = str(input("Player 2 score"))
text_file = open("CH30.txt", "r+")
if score > score2:
    content = text_file.readlines(30)
    if len(content) > 0 :
        text_file.write("n")
    text_file.write(name)
    text_file.write (" wins with ")
    text_file.write (score)
    text_file.write (" points")
else:
    content = text_file.readlines(30)
    if len(content) > 0 :
        text_file.write("n")
    text_file.write (name2)
    text_file.write (" wins with ")
    text_file.write (score2)
    text_file.write (" points")


text_file = open('CH30.txt.', 'r')
Lines = text_file.readlines()
PlayersScores = []

# read each line get the player name and points 
for line in Lines:
    # split the line into list of strings
    line = line.split(" ")
    # removing n from last element
    line[-1] = line[-1].replace("n", "")
    print(line)
    # find player name position
    playerName = line.index("wins") - 1
    # find points position
    points = line.index("points") - 1
    points = int(points)
    # add the tuple (playerName, points) in a list
    PlayersScores.append((line[playerName], line[points]))
# descending order sort by player score
PlayersScores = sorted(PlayersScores, key=lambda t: t[1], reverse=True)
PlayersScores.append((line[playerName], points))
import re
parsed_num = re.findall(r'd+', line) # will extract only numbers from line
points = int(''.join(parsed_num))
PlayersScores.append((line[playerName], points))
# get the first 5 players
print("Highest Scores:n")
for i in range(5):
    print(str(i+1) + ". " + PlayersScores[i][0] + " " + PlayersScores[i][1] + " points")
Answered By: Jamie Cooper

Below is the fixed part of the code to get the correct value for points.
I did not touch the other parts of the code.

text_file = open('CH30.txt.', 'r')
Lines = text_file.readlines()
PlayersScores = []
for line in Lines:
    line = line.split()
    playerName = line[0]
    points = int(line[3])
    .....
Answered By: Yuri Ginsburg
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.