python - 如何解决'发生异常:TypeError coercing to Unicode: need string or buffer, tuple found' in Python
问题描述
我正在尝试从匹配数据集中计算团队的平均目标,并提出以下错误 - '发生异常:TypeError coercing to Unicode: need string or buffer, tuple found ' My code is;
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:\Users\HP\PycharmProjects\betapp1\model_1.py", line 28, in <module>
with open(file) as f:
File "C:\Users\HP\Anaconda2\Lib\runpy.py", line 72, in _run_code
exec code in run_globals
File "C:\Users\HP\Anaconda2\Lib\runpy.py", line 82, in _run_module_code
mod_name, mod_fname, mod_loader, pkg_name)
File "C:\Users\HP\Anaconda2\Lib\runpy.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
我希望输出是一个包含球队平均进球数的列表,但我没有得到任何输出
解决方案
看起来你的错误在这里:
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])
。如果您指定您尝试打开的文件名,那么我们可以提供进一步的帮助。
推荐阅读
- javascript - CSS动画径向渐变?
- reactjs - Next.js 在 Kubernetes 上使用 Nginx
- excel - 条件格式 - 多个条件加上通配符文本匹配
- ios - 水平翻转视图。Xcode
- html - HTML中head标签内的body标签?
- python - python3:logging.basicConfig 将所有内容发送到 stderr?
- typescript - 使用声明命名空间覆盖 node_modules 包的类型
- mlab - Mayavi mlab 故障 - 渲染不会在旋转时更新
- osgi - 如何使用 bnd-maven-plugin 嵌入 maven 依赖项
- javascript - 使用基于类实例类型的模板