Строка для отображения при отсутствии запятой в строке
Я как бы нарисовал себя в углу, преобразовав векторы из кадра данных в 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]* , ",")