从列表中删除 ' ' 和 [ ]

问题描述

我的任务是从字典中的“监护人”键之间取出并删除“和”。这是嵌套在列表中的字典:

PLAYERS = [{
        'name': 'Karl Saygan','guardians': 'Heather Bledsoe','experience': 'YES','height': '42 inches'
    },{
        'name': 'Matt Gill','guardians': 'Charles Gill and Sylvia Gill','experience': 'NO','height': '40 inches'
    },{   'name': 'Sammy Adams','guardians': 'Jeff Adams and Gary Adams','height': '45 inches'
    },{
        'name': 'Chloe Alaska','guardians': 'David Alaska and Jamie Alaska','height': '47 inches'
    },{
        'name': 'Bill Bon','guardians': 'Sara Bon and Jenny Bon','height': '43 inches'
    },{
        'name': 'Joe Kavalier','guardians': 'Sam Kavalier and Elaine Kavalier','height': '39 inches'
    },{
        'name': 'Phillip Helm','guardians': 'Thomas Helm and Eva Jones','height': '44 inches'
    }
]

我在没有“ ”的情况下对它进行了格式化:

import random
from constants import PLAYERS
from constants import TEAMS

GREETING = 'BASKETBALL TEAM STATS TOOL\n'

players = PLAYERS.copy()
teams = TEAMS.copy()

print(GREETING.upper())


print('-----MENU-----\n')


max_players = len(players)/len(teams)
exp_players = []
nexp_players = []

panthers = []
bandits = []
warriors = []

       
squads = [panthers,bandits,warriors]
num_teams= len(squads)             
            
def balance_teams(players):
    for player in players:
        experience = player['experience']
       
        
        if experience == 'YES':
            exp_players.append(player)
            
        else:
            nexp_players.append(player)  
  


def balance_exp(exp_lists):
    for num in range(len(exp_lists)):
        squads[num % num_teams].append(exp_lists[num])
            
def dis_options():
    print('Here are your Choices: \n A) display Team Stats \n B) Quit\n\n')
    while max_players > 0:
        try:
            activate = input('Enter an option: ')
            
            if activate.lower() == "a" or activate.lower() == "b":
                
                if activate.lower() == "a":
                    show_teams()
                
                elif activate.lower() == "b":
                    print('Thank you,come back for more basketball stats!')
                    exit()
            else:
                raise ValueError
        
        except ValueError as err:
            print("\nInvalid input.Please choose either A or B\n")
            

    
def show_teams():
    print('\nA)Panthers\n\nB)Bandits\n\nC)Warrirors\n\n')

    try:
        team_sel= input('Enter an option: ')
        if team_sel.lower() == "a" or team_sel.lower()=="b" or team_sel.lower() == "c":
            if team_sel.lower() == "a":
                team = "Panthers"
                members = len(panthers)
                exp_count = 0
                height = []
                for players in panthers:
                    if players['experience']== True:
                        exp_count += 1
                    height.append(players['height'])
                nexp_count = (members - exp_count)
                average_height = (round(sum(height)/members)) 
                
                print('\nTEAM: {} Stats\n--------------------\nTotal Players: {}\nExperienced Players: {}\nNon-experienced Players: {}\nAverage Height: {} inches\n\n'.format(team,members,exp_count,nexp_count,average_height))
                print(pretty_data(*panthers,sep= ','))
               
            elif team_sel.lower() == "b":
                team = "Bandits"
                members = len(bandits) 
                exp_count = 0
                height = []
                for players in bandits:
                    if players['experience']== True:
                        exp_count += 1
                    height.append(players['height'])
                nexp_count = (members - exp_count)
                average_height = (round(sum(height)/members)) 
                
                print('\nTEAM: {} Stats\n--------------------\nTotal Players: {}\nExperienced Players: {}\nNon-experienced Players: {}\nAverage Height: {} inches\n\n'.format(team,average_height))
                print(pretty_data(*bandits,'))
            
            elif team_sel.lower() == "c":
                team = "Warriors"
                members = len(warriors)
                exp_count = 0
                height = []
                for players in warriors:
                    if players['experience']== True:
                        exp_count += 1
                    height.append(players['height'])
                nexp_count = (members - exp_count)
                average_height = (round(sum(height)/members)) 
                
                print('\nTEAM: {} Stats\n--------------------\nTotal Players: {}\nExperienced Players: {}\nNon-experienced Players: {}\nAverage Height: {} inches\n\n'.format(team,average_height))
                print(pretty_data(*warriors,'))
                
        else:
            raise ValueError
      
    except ValueError as err:
        print("\nInvalid input.Please choose either A,B or C\n")     

def pretty_data(*team,'):
    for player in team:
        print(f"Name: {player['name']}\nGuardians: {player['guardians']}\nExperience: {player['experience']}\nHeight: {player['height']}\n")
        
if __name__ == '__main__':
    def clean_data():
        for player in players:
            if player['experience'].lower() == 'yes':
                player['experience'] = True
            else:
                player['experience'] = False
            
        for player in players:
            if player['height'] != int():
                player['height'] = int(player['height'].split()[0])
                

            
    
      
    balance_teams(players)
    balance_exp(exp_players)
    balance_exp(nexp_players)
    clean_data()
    dis_options()
    

接下来,我需要删除监护人之间的 和 ,我使用了:

        for player in PLAYERS:
            player['guardians'] = player['guardians'].split(' and ')

结果打印如下:

Name: Herschel Krustofski                                                                                                        
Guardians: ['Hyman Krustofski','Rachel Krustofski']                                                                             
Experience: True                                                                                                                 
Height: 45                                                                                                                       
                                                                                                                                 
Name: Matt Gill                                                                                                                  
Guardians: ['Charles Gill','Sylvia Gill']                                                                                       
Experience: False                                                                                                                
Height: 40                                                                                                                       
                                                                                                                                 
Name: Joe Kavalier                                                                                                               
Guardians: ['Sam Kavalier','Elaine Kavalier']                                                                                   
Experience: False                                                                                                                
Height: 39                                                                                                                       
                                                                                                                                 
Name: Eva Gordon                                                                                                                 
Guardians: ['Wendy Martin','Mike Gordon']                                                                                       
Experience: False                                                                                                                
Height: 45                       

括号和引号被添加回来。我尝试将.split 添加到pretty_data 函数,但它仍然包含' ' 和[]。有人可以给我指导吗?

解决方法

方括号和引号是 Python 用来表示字符串(引号)和列表(方括号)的符号。它们没有被添加,你不能把它们拿走。现在,如果您只想在不看到括号的情况下打印它们,那么这很容易。

example = ['Hyman Krustofski','Rachel Krustofski'] 
print(f"Guardians: {example}")
print(f"Guardians: {','.join(example)}")

这产生:

Guardians: ['Hyman Krustofski','Rachel Krustofski']
Guardians: Hyman Krustofski,Rachel Krustofski
,

简单替换:

player['guardians'] = player ['guardians'].replace(' and ',',')