将带句点的字符串转换为大写-Python



我正在尝试将一系列市场转换为大写,以便可以与zip字典匹配。当我循环遍历字符串并转换为大写时,它运行良好,如下所示:

def uppercase(series):
for string in series:
print(string.upper())

uppercase(markets.County)

但当我试图将其附加到一个新的列表中或进行列表理解时,它失败了:

def uppercase(series):
string_upper = []

for string in series:
string_upper.append(string.upper())

uppercase(markets.County)

由于属性错误,无法将句点转换为大写。但它只是在上面的代码中做到了这一点。

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-25-2c8a689b8491> in <module>
6         string_upper.append(string.upper())
7 
----> 8 uppercase(markets.County)
<ipython-input-25-2c8a689b8491> in uppercase(series)
4 
5     for string in series:
----> 6         string_upper.append(string.upper())
7 
8 uppercase(markets.County)
AttributeError: 'float' object has no attribute 'upper'

这似乎是一个2秒的简单解决方案。当它必须附加新数据时,为什么会失败?

将变量打印到stdout时,变量会隐式转换为字符串表示。所以,事实上,正在发生的是:

  1. 变量转换为字符串(如果var是变量,则等效于str(var)(
  2. 转换后的值写入stdout

这意味着您需要执行额外的检查(如果希望省略非字符串值(或转换(如果希望对每个非字符串值执行显式转换(。

所以你需要修改你的代码来做到这一点:

def uppercase(series):
string_upper = []

for value in series:
string_upper.append(str(value).upper())

最新更新