Ошибка Python ValueError: не удалось преобразовать строку в float

#python #numpy-ndarray

#python #numpy-ndarray

Вопрос:

У меня есть приведенный ниже код, где ввод h_ply =['0.12, 0.15, 0.2, 0.125']

 h_ply = simpledialog.askstring('Laminate Properties','Ply Thickness')
try:
    h_layer_list = [int(x) for x in h_ply.split(',')] 
    h_layer = np.array(h_layer_list) * 0.001 
  

Я также пытался

 h_ply1 = np.array(h_ply)
h_layer = h_ply1.astype(np.float) 
  

Но получил ту же ошибку.

Я пытаюсь получить h_ply список np.array из чисел с плавающей запятой. Но появляется ошибка значения. Я понимаю, это может быть потому, что у меня должно быть '' каждое число, а не только на концах? Но в идеале я хочу избежать этого, чтобы быть более удобным для пользователя. Каков наилучший способ избавиться от этого сообщения об ошибке?

Спасибо

Комментарии:

1. Показать полную обратную трассировку ошибки в виде правильно отформатированного текста в вопросе.

Ответ №1:

Способ справиться с этим — правильно получить доступ к строке. Посмотрите на свои данные:

 h_ply =(       # a tuple, containing ...
         [     # a single element, a list, containing ...
           [   # a single element, a list, containing ...
             '0.12, 0.15, 0.2, 0.125'     # ... a string that you have to split
           ]
         ]
       )
  

Вам нужно удалить все эти слои, чтобы добраться до строки:

 h_str = h_ply[0][0][0]
  

Теперь вы можете разделить строку и преобразовать элементы в числовые значения. Опубликованный вами код пытается разделить кортеж и преобразовать его.

Комментарии:

1. Просто чтобы быть уверенным, я должен удалить ее h_ply =['0.12, 0.15, 0.2, 0.125'] , и тогда она должна работать?

2. Нет, вы должны преобразовать ее в строку.

3. Мне очень жаль, я новичок в Python, поэтому я не очень хорошо понимаю. Не могли бы вы привести пример, пожалуйста?

4. Переполнение стека не предназначено для замены существующей документации и руководств. Я привел вам пример. Если вы не понимаете различий между этими структурами данных, нам нужно, чтобы вы вернулись к своим учебным материалам. Индивидуальное обучение выходит за рамки переполнения стека.