Строка для отображения при отсутствии запятой в строке

Я как бы нарисовал себя в углу, преобразовав векторы из кадра данных в str, Мои векторы теперь выглядят так [ -9.1676396 -171.8196878], Проблема в том, что они как-то потеряли запятую в середине, раньше было так [ -9.1676396, -171.8196878], Затем, когда бы мне ни понадобилось преобразование списка, я мог сделать:

literal_eval('[ -9.1676396, -171.8196878]')

Однако это больше не работает, так как я потерял запятую. У меня вопрос, как я могу преобразовать строку, как это в списке? Я также должен учитывать тот факт, что некоторые могут отличаться по расстоянию. Вот тип изменений, которые я мог бы иметь:

[ -9.1676396 -171.8196878 ]
[1.2904753 103.8520359]
[   21.2160437 -157.975203 ]

2 ответа

Решение

Если у вас есть строка вроде:

[ -9.1676396 -171.8196878 ]

Его можно легко преобразовать в список чисел с помощью следующего кода:

[float(x) for x in '[ -9.1676396 -171.8196878]'.replace('[','').replace(']','').split()]

Этот код удаляет [ а также ] Символы, разделяет строку с пробелом в качестве разделителя и преобразует результирующие строки в плавающие.

Похоже, у вас больше нет строки, просто массив.

Я предлагаю вам использовать регулярные выражения

 import re

 pattern =  "/[\s" #replace spaces on outside of numbers if any
 replace = "" # i.e nothing
 re.sub(pattern, replace)

Затем сделайте то же самое снова, но шаблон регулярного выражения будет

 re.sub([0-9]*\s[0-9]* , ",")
Другие вопросы по тегам