#python #string
#python #строка
Вопрос:
Мне удалось считывать текущие данные о местоположении робота с помощью TCP / IP в приложении Python. Это выполняется каждые 0,08 секунды (80 мс). Смотрите код ниже.
import urllib.request
import time
i = 0
while(i < 100):
t0 = time.time()
response = urllib.request.urlopen("http://192.168.41.110/MD/CURPOS.DG")
for line_number, line in enumerate(response):
if(line_number >= 165 and line_number <= 171):
print(line)
i = i 1
t1 = time.time()
total = t1-t0
print ("Total Cyclic time: ", total)
print("nn")
Вывод:
b'X: 566.13n'
b'Y: 226.40n'
b'Z: 312.07n'
b'W: 179.99n'
b'P: .00n'
b'R: -66.34n'
Total Cyclic time: 0.07909107208251953
Я хочу сохранить каждую ось: XYZ WPR внутри переменной. Для достижения этой цели я хочу отфильтровать ненужную информацию. Для этого должно быть простое решение!
Требуемый результат:
566.13
226.40
312.07
179.99
.00
-66.34
Total Cyclic time: 0.07909107208251953
Комментарии:
1. Я не вижу никакой ненужной информации. Вы имеете в виду, что может быть какая-то другая информация, которая поступает?
2. Я считаю, что он просто хочет получить значение и избавиться от всего остального… Сначала расшифруйте строку. Найдя pos ‘:’ и », а затем strip() float() значение между ними, он должен получить то, что он хочет.
3. Каким должен быть конечный результат?
4. Я отредактировал свой пост.
5. Для чисел с плавающей запятой выполняйте
print(float(line.split()[-1]))
; для строк выполняйтеprint(line.decode().split()[-1])
.
Ответ №1:
yourvar = float((yourstring.decode("utf-8")[2:-1]).strip())
Комментарии:
1. Это отлично справляется с задачей! Спасибо.
Ответ №2:
Во-первых, вы должны декодировать результат, поскольку все они байты. После этого вы можете просто проверить, является ли начальный символ X, Y или Z, а затем удалить букву, двоеточие и завершающий символ n, чтобы получить фактическое значение.