【问题标题】:Convert the integral part fro list to int and keeping the strings as it is将整数部分从 list 转换为 int 并保持字符串不变
【发布时间】:2017-08-29 09:56:46
【问题描述】:

我有一个列表l = ['1','2','3','rt4','rt5']。我想转换 int 类型的数字,其余的保持原样。

期望的输出:

m = [1, 2, 3, 'rt4', 'rt5']

我尝试了以下方式

ord(m['rt4'])

它给了我以下错误 “TypeError: ord() 需要一个字符,但找到了长度为 3 的字符串”

【问题讨论】:

  • 问题下方有一个edit 按钮!使用其他信息编辑您的问题。
  • 在编辑时,您还应该以minimal reproducible example 的形式展示您尝试过的内容以及确切的问题所在。

标签: python


【解决方案1】:

它应该可以工作:

l = ['1','2','3','rt4','rt5']
def reformater(din):
    try:
        return int(din)
    except Exception:
        return din
s = [reformater(i) for i in l]

【讨论】:

    【解决方案2】:

    您可以使用内置的int() 函数将字符串转换为整数。如果输入字符串不是有效的整数,此函数将抛出异常,因此您可以在这种情况下使用 try..catch statement 返回未修改的输入。

    l = ['1','2','3','rt4','rt5']
    def try_to_int(s):
        try:
            return int(s)
        except:
            return s
    m = [try_to_int(it) for it in l]
    print(m)
    

    int() 可能会接受比您想要的更多格式作为有效整数,因此您也可以显式验证整数。

    【讨论】:

    • 谢谢@millimoose。这对我有帮助
    【解决方案3】:
    def RepresentsInt(s):
        try: 
            int(s)
            return True
        except ValueError:
            return False
    l=['1','2','3','rt4','rt5']
    l=[int(l[i]) if RepresentsInt(l[i]) else l[i] for i in range(0,len(l))] 
    

    检查 int 的函数。

    l=['1','2','3','rt4','rt5']
    l=[int(i) if i.isdigit() else i for i in l]  
    

    只使用 isdigit() 内置函数。

    【讨论】:

      猜你喜欢
      • 2011-03-13
      • 1970-01-01
      • 2014-10-28
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-03
      相关资源
      最近更新 更多