Фильтровать строку в Python

#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, чтобы получить фактическое значение.