【问题标题】:Convert strings with periods to uppercase - Python将带句点的字符串转换为大写 - Python
【发布时间】:2023-01-05 02:58:32
【问题描述】:

我正在尝试将一系列市场转换为大写,以便与 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 秒的简单解决方案。为什么必须附加新数据时会失败?

【问题讨论】:

  • string_upper.append(字符串)
  • 错误很明显。在您的系列中,您有不是字符串的对象。您应该在使用.upper() 方法之前进行检查。使用 try/except 块来查找问题,或者当对象是字符串时简单地转换为 upper。

标签: python string uppercase data-wrangling


【解决方案1】:

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

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

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

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

    def uppercase(series):
    
        string_upper = []
        
        for value in series:
            string_upper.append(str(value).upper())
    

【讨论】:

    猜你喜欢
    • 2018-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 2010-10-18
    • 1970-01-01
    • 2019-03-22
    相关资源
    最近更新 更多