Как решить » Произошло исключение: ошибка типа, приводящая к Unicode: нужна строка или буфер, найден кортеж» в Python

#python

#питон

Вопрос:

Я пытаюсь вычислить средние цели по команде из набора данных совпадений и выдал следующую ошибку: «Произошло исключение: TypeError принудительное преобразование в Юникод: нужна строка или буфер, найден кортеж» Мой код;

 matches = open('matches.csv', 'r')
data_read = csv.reader(matches, delimiter = ',')
matches = []
for row in data_read:
    matches.append((row[0], row[1], row[2], row[3]))

 team=['Bandari','Chemelil','Gor Mahia','Kakamega Homeboyz','Kariobangi Sharks','Kenya CB',
 'Leopards','Mathare Utd.','Mount Kenya United', 'Nzoia Sugar','Posta Rangers','Sofapaka',
 'Sony Sugar','Tusker','Ulinzi Stars','Vihiga United', 'Western Stima', 'Zoo']

results=[]
for file in matches:
    avgs=[]
    **for object in team:**
        goalsscored=0
        with open(file) as f:
            reader=csv.DictReader(f)
            rows=[ row for row in reader if row['Home_Team']==object]

            for row in rows:
                for rows in row[HTgoals]:
                    goalsscored=goalsscored   int(row['HTgoals'])


        with open(file) as f:
            reader=csv.DictReader(f)
            rows2=[ row for row in reader if row['Away_Team']==object]

            for row in rows2:
                for rows2 in row['ATgoals']:
                    goalsscored=goalsscored   int(row['ATgoals'])

            kk=df.apply(pd.value_counts) 
            avgs.append(goalsscored/kk) 
    results.append(avgs)             
 

Ошибка, которую я получаю, которая появляется в строке, заключенной в двойные звездочки, выглядит следующим образом

 Exception has occurred: TypeError
coercing to Unicode: need string or buffer, tuple found
  File "C:UsersHPPycharmProjectsbetapp1model_1.py", line 28, in <module>
with open(file) as f:
  File "C:UsersHPAnaconda2Librunpy.py", line 72, in _run_code
exec code in run_globals
  File "C:UsersHPAnaconda2Librunpy.py", line 82, in _run_module_code
mod_name, mod_fname, mod_loader, pkg_name)
  File "C:UsersHPAnaconda2Librunpy.py", line 252, in run_path
return _run_module_code(code, init_globals, run_name, path_name)  
 

Мой набор данных состоит из 4 значений в строке: команда хозяев, команда гостей, голы, забитые командой хозяев и голы, забитые командой гостей. Пример приведен ниже;

 Gor Mahia,Tusker,1,0
Mount Kenya United,Zoo,1,0
Sony Sugar,Western Stima,4,0
 

Я ожидаю, что результатом будет список со средним количеством голов, забитых командой, но я не получаю никаких результатов

Комментарии:

1. Можете ли вы опубликовать полную трассировку стека?

2. Вы заставляете нас догадываться, где ошибка. Пожалуйста, отредактируйте вопрос, чтобы включить полное сообщение об ошибке.

Ответ №1:

Похоже, ваша ошибка здесь:

 for file in matches:
    avgs=[]
    for object in team:
        goalsscored=0
        with open(file) as f: # error is here
            reader=csv.DictReader(f)
 

Ожидается, open что функция будет file строковым или файловым буфером, но это кортеж, который выглядит примерно так (row[0], row[1], row[2], row[3]) . Если вы укажете имена файлов, которые пытаетесь открыть, мы сможем помочь в дальнейшем.