为什么此代码会产生错误“ AttributeError:'Match'对象没有属性'replace'”?

时间:2019-01-10 19:05:21

标签: python python-3.x math

使用以下基本脚本,我可以使用sports包获取所有当前匹配项:​​

import sports
all_matches = sports.all_matches()
s = all_matches['soccer']
print(s)

>> [Saham 1-2 Al Shabab, Cuanda Cubango FC 1-2 Academica Lobito, Recreativo Da Caala 0-2 Primeiro De Agosto, Progresso Associacao 0-0 Santa Rita De Cassia, Wapda 1-1 Karachi Electric, Tooro United 2-0 Bright Stars FC, Bul FC 2-2 Nyamityobora, Paidha Black Angels 1-1 Maroons FC, Express FC 0-0 Ndejje University, Pakistan Navy 1-0 National Bank, La Roda 0-0 Atletico Ibanes] [Finished in 10.4s]

我希望拆分列表,以便每行都具有一个匹配项,如下所示:

import sports
all_matches = sports.all_matches()
s = all_matches['soccer']
soccer = [i.replace(',', '\n') for i in s]
print(soccer)

AttributeError: 'Match' object has no attribute 'replace'

希望的输出:

>>[Saham 1-2 Al Shabab
>>Cuanda Cubango FC 1-2 Academica Lobito
>>Recreativo Da Caala 0-2 Primeiro De Agosto
>>Progresso Associacao 0-0 Santa Rita De Cassia
>>Wapda 1-1 Karachi Electric
>>Tooro United 2-0 Bright Stars FC

1 个答案:

答案 0 :(得分:3)

您正在使用的库中的Match类定义相同的__repr____str__方法,这些方法返回包含主队名称,主队得分,客队得分的字符串还有客队的名字这就是为什么在打印匹配项列表时看到结果的原因。

您的变量slist个对象中的Match个。

有两种方法可以将每个匹配项打印在单独的行上。

您可以使用for循环打印每个匹配项:

>>> for m in matches:
...     print(m)
... 
Saham 1-2 Al Shabab
Cuanda Cubango FC 1-2 Academica Lobito
Recreativo Da Caala 0-2 Primeiro De Agosto
Progresso Associacao 0-0 Santa Rita De Cassia
Wapda 1-1 Karachi Electric
Tooro United 2-0 Bright Stars FC
Bul FC 2-2 Nyamityobora
Paidha Black Angels 1-1 Maroons FC
Express FC 0-0 Ndejje University
Pakistan Navy 1-0 National Bank
La Roda 0-0 Atletico Ibanes 

或者您可以使用str.join方法将所有对象的字符串表示形式连接在一起,并在其中使用换行符:

>>> print('\n'.join(str(x) for x in matches))
Saham 1-2 Al Shabab
Cuanda Cubango FC 1-2 Academica Lobito
Recreativo Da Caala 0-2 Primeiro De Agosto
Progresso Associacao 0-0 Santa Rita De Cassia
Wapda 1-1 Karachi Electric
Tooro United 2-0 Bright Stars FC
Bul FC 2-2 Nyamityobora
Paidha Black Angels 1-1 Maroons FC
Express FC 0-0 Ndejje University
Pakistan Navy 1-0 National Bank
La Roda 0-0 Atletico Ibanes