Преобразование части строки с десятичной дробью в Int в Python - PullRequest
1 голос
/ 30 апреля 2019

У меня есть целая строка в Python.Я хочу выделить часть того, что является числом с десятичной дробью, и преобразовать в int.Я искал и пробовал много вещей, включая массив, но без кубиков.

#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)

Я хочу изолировать «3.45» от строки «1: 3.45», а затем преобразовать «3.45» в int,Я знаю, что если у вас есть «3.45» в качестве строки, вы можете просто сделать int (3.45) для ее преобразования.Тем не менее, я борюсь за изоляцию этой части строки с десятичной дробью в первой части.Любая помощь с благодарностью!

Ответы [ 3 ]

2 голосов
/ 30 апреля 2019

Если заданная вами строка '1: 3.45', вы можете разбить строку на точку с запятой с помощью собственного метода .split () python следующим образом ...

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

Тогда, как высказал, что вы можете сделать int с int(float(num)), который будет округлять вниз, или round(float(num)) на случай, если вы захотите округлить, и более поздняя строка будет "1: 3.55"

0 голосов
/ 30 апреля 2019

Если ваша входная строка имеет формат '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
0 голосов
/ 30 апреля 2019

Разделить на ":", который возвращает массив, преобразовать в float, преобразовать в int:

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