【问题标题】:How to change from string to integer如何从字符串更改为整数
【发布时间】:2019-09-08 14:11:43
【问题描述】:

我需要创建一个函数,用这个结构改变一串逗号分隔的整数:

signal = ('1,7,6,9,12,21,26,27,25')

如果我使用这个代码,两位数是不正确的,因为它会导致分成两个数

result = [int(i) for i in signal]

当前输出:[1, 7, 6, 9, 1, 2, 2, 1, 2, 6, 2, 7, 2, 5]

预期输出:[1,7,6,9,12,21,26,27,25]

【问题讨论】:

    标签: python python-3.x string casting int


    【解决方案1】:

    type(signal) 会告诉你signal 的数据类型仍然是str。试试下面的

    x = signal.split(',')
    [int(i) for i in x]
    

    【讨论】:

    • 这将输出作为字符串列表,而不是整数
    【解决方案2】:

    事实上,您的代码在尝试将',' 转换为int 时会引发ValueError,您的实际代码中可能有一个tuple 字符串(string = ('1','7','6','9','12','21','26','27','25'),在这种情况下您的代码应该工作正常),如果没有,那么另一个问题是你分别转换字符串的每个字符,你应该先用逗号split字符串(避免ValueError并转换每个数字 而不是每个 digitint):

    signal = '1,7,6,9,12,21,26,27,25'
    
    result = [int(i) for i in signal.split(',')]
    
    print(result)
    

    输出:

    [1, 7, 6, 9, 12, 21, 26, 27, 25]
    

    【讨论】:

      【解决方案3】:

      使用eval的最短方法

      list(eval(signal))
      

      测试:

      >>> signal = ('1,7,6,9,12,21,26,27,25')
      >>> 
      >>> list(eval(signal))
      [1, 7, 6, 9, 12, 21, 26, 27, 25]
      >>> 
      

      或者另一个使用eval:

      eval("[" + signal + "]")
      

      测试:

      >>> signal = ('1,7,6,9,12,21,26,27,25')
      >>> 
      >>> eval("[" + signal + "]")
      [1, 7, 6, 9, 12, 21, 26, 27, 25]
      >>> 
      

      这是另一个类似的解决方案:

      list(map(int, signal.split(",")))
      

      测试:

      >>> signal = ('1,7,6,9,12,21,26,27,25')
      >>>
      >>> list(map(int, signal.split(",")))
      [1, 7, 6, 9, 12, 21, 26, 27, 25]
      >>> 
      

      【讨论】:

        【解决方案4】:

        我希望下面的代码有帮助:

        result = [int(i) for i in signal.split(',')]
        print(result)
        

        【讨论】:

          【解决方案5】:

          我找到了两种方法来解决您的问题:

          signal = ('1,7,6,9,12,21,26,27,25')
          

          1。首先使用 split 根据 ',' 字符从字符串中创建一个列表,然后使用 int 更改输出类型。

          print([int(x) for x in signal.split(',')])
          

          2。另一种方法是您可以使用 ma​​pint 应用于由 split 方法创建的列表。

          print(list(map(int, signal.split(','))))
          

          【讨论】:

            猜你喜欢
            • 2013-09-25
            • 1970-01-01
            • 1970-01-01
            • 2020-01-13
            • 1970-01-01
            • 2015-08-02
            • 1970-01-01
            • 1970-01-01
            • 2020-07-01
            相关资源
            最近更新 更多