【问题标题】:Converting Part of a String with a Decimal to an Int in Python在 Python 中将带小数的字符串的一部分转换为 Int
【发布时间】:2019-09-19 10:36:40
【问题描述】:

我在 python 中有一个完整的字符串。我想分离出带小数的数字的一部分并转换为整数。我已经搜索并尝试了很多东西,包括数组但没有骰子。

#msg.payload is a string of 1:3.45
s = msg.payload
print(msg.payload)

if (s[0] == "1"):
    print("Distance from Anchor 1 received")
    d1 = arr.array((s[2], ".", s[4], s[5]))
    d1converted = int(d1)
    print(d1)

我想从字符串 '1:3.45' 中分离出 '3.45',然后将 '3.45' 转换为 int。我知道一旦你有 '3.45' 作为一个字符串,你可以简单地做 int(3.45) 来转换它。但是,我正在努力将字符串的那部分与第一部分中的小数隔离开来。非常感谢任何帮助!

【问题讨论】:

    标签: python string type-conversion int


    【解决方案1】:

    用“:”分割,返回一个数组,转成float,转成int:

    int(float("1:3.45".split(':')[1]))
    

    【讨论】:

    • 只有代码的答案不如那些有解释的有用。请edit您的回答包含其他信息,例如它的作用以及它解决问题的原因。请参阅How to Answer 了解更多信息。
    【解决方案2】:

    如果你的输入字符串是'int1:int2.int3'的格式,你可以先用:分割它们,然后再用.分割第二部分,像这样:

    s = '1:3.45'
    int1 = int(s.split(':')[0])
    int2 = int(s.split(':')[1].split('.')[0])
    int3 = int(s.split(':')[1].split('.')[1])
    

    输出

    int1 = 1
    int2 = 3
    int3 = 45
    

    【讨论】:

      【解决方案3】:

      如果你得到的字符串是 '1:3.45' 那么你可以使用 python 的原生 .split() 方法在分号处拆分字符串,如下所示......

      string = "1:3.45"
      split_string = string.split(":")  # split_string is ["1", "3.45"]
      num = split_string[1]
      

      然后就像你说的那样,你可以用 int(float(num)) 创建一个整数,它会向下舍入,或者 round(float(num)) 以防你想要舍入并且后面的字符串是“1:3.55”

      【讨论】:

      • 感谢您的回复!我可以让您的代码在“1:3”之类的示例上运行,并且可以将 3 隔离并打印为 int。但是,当我在 3 上加上一个小数点时,比如“1:3.45”,它就不起作用,也不会打印任何东西。小数点仍然把它扔掉。任何想法为什么?如果有帮助的话,我正在使用 Python 2.7.13。
      • 为了隔离小数点,我终于可以使用 num = float((s.split(':')[1])) 再次感谢!跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      相关资源
      最近更新 更多