Е
Евгений_Канусовский@198118 октября 2019 г. 5:44

Не получается в Python конвертировать string в float

Добрый день! Прошу помощи: Столкнулся с проблемой конвертации string в float:

import codecs

f = codecs.open ("test.txt", 'r', encoding='cp866')
for line in f:
    pkp = 1
    for lk in range (0, len (line), 1):
        if line[lk] == '0' or line[lk] == '1' or line[lk] == '2' or line[lk] == '3' or line[lk] == '4' or line[lk] == '5' or line[lk] == '6' or line[lk] == '7' or line[lk] == '8' or \
        line[lk] == '9' or line[lk] == '.' or line[lk] == ',' or line[lk] == '-' or line[lk] == '\n' or line[lk] == ' ' or line[lk] == '  ':  # or line[lk:(lk+2)] != '--' or line[lk] != '#':
                            pkp += 1
    if pkp == len (line):
        text = line
        nev_text = ''
        lk = ''
        for i, x in enumerate (text):
            if x == ' ':
                if lk != '':
                    if lk != ' ':
                        nev_text += ','
                    else:
                        nev_text += x
            else:
                nev_text += x  # F
            lk = x
        if len (nev_text) > 2:
            nev_text1 = list (map(float, nev_text)) # Здесь программа вылетает, не может конвертировать string в float
            lj = 0.00, 10000.00
            new_list = list(map(lambda m, f: m + f, nev_text1, lj))
            print(new_list)
f.close ()
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

5
Е
  • 18 октября 2019 г. 14:07

test.txt test.txt
Файл test.txt:

    Evgenii Legotckoi
    • 18 октября 2019 г. 14:30

    Добрый день.

    У вас там пробелы находятся в тексте, поэтому и не может сконвертировать. фукция map применяет float ко все символам в каждой строке. В том числе и к символам пробела. А пробел вы не можете преобразовать во float, поэтому и вылетает. В качестве символов в той строке могут быть только числа, и точки. Даже запятые являеются невалидными символами.

      Е
      • 19 октября 2019 г. 7:27

      Спасибо Евгений за очередную подсказку! Всё-таки решилась проблема)))

      import codecs
      
      f = codecs.open ("1test_BK.txt", 'r', encoding='cp866')
      for line in f:
          pkp = 1
          for lk in range (0, len (line), 1):
              if line[lk] == '0' or line[lk] == '1' or line[lk] == '2' or line[lk] == '3' or line[lk] == '4' or line[lk] == '5' or line[lk] == '6' or line[lk] == '7' or line[lk] == '8' or \
              line[lk] == '9' or line[lk] == '.' or line[lk] == ',' or line[lk] == '-' or line[lk] == '\n' or line[lk] == ' ' or line[lk] == '  ':  
                                  pkp += 1
          if pkp == len (line):
              text = line
              nev_text = ''
              lk = ''
              for i, x in enumerate (text):
                  if x == ' ':
                      if lk != '':
                          if lk != ' ':
                              nev_text += ','
                          else:
                              nev_text += x
                  else:
                      nev_text += x  # F
                  lk = x
              if len (nev_text) > 2:
                  nev_text1 = nev_text.split(',')
                  nev_text3 = ''
                  nev_text4 = ''
                  nev_text5 = ''
                  for jw in range (0, len(nev_text1)-1, 1):
                      if jw % 2 != 0:
                          nev_text2 = float(nev_text1[jw])
                          nev_text2 += 10000.00
                          nev_text3 = str(nev_text2)
                          print (nev_text5, nev_text3)
                      else:
                          nev_text4 = nev_text1[jw]
                          nev_text5 = str(nev_text4)
      f.close ()
      
        O
        • 22 октября 2019 г. 0:48

        По моему, алгоритм перебора символов в 6-8 строках жутко тормознутый.
        Зачем все время операция "or"?
        Если очередной символ удовлетворяет условию, то дальнейшая "or" уже смысла не имеет и надо идти на начало цикла.

          Е
          • 22 октября 2019 г. 1:03

          Этот алгоритм предназначен для того чтобы исключить из обработки строки содержащие буквенные символы. Если Вам не трудно опишите пожалуйста как бы Вы написали этот алгоритм, желательно в коде?

            Комментарии

            Только авторизованные пользователи могут публиковать комментарии.
            Пожалуйста, авторизуйтесь или зарегистрируйтесь
            AD

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Результат:50баллов,
            • Очки рейтинга-4
            m
            • molni99
            • 26 октября 2024 г. 1:37

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Результат:80баллов,
            • Очки рейтинга4
            m
            • molni99
            • 26 октября 2024 г. 1:29

            C++ - Тест 004. Указатели, Массивы и Циклы

            • Результат:20баллов,
            • Очки рейтинга-10
            Последние комментарии
            i
            innorwall13 ноября 2024 г. 23:03
            Как написать игру на Qt - Урок 3. Взаимодействие с другими объектами what is priligy tablets What happens during the LASIK surgery process
            i
            innorwall13 ноября 2024 г. 20:09
            Использование переменных объявленных в CMakeLists.txt внутри C++ файлов where can i buy priligy online safely Tom Platz How about things like we read about in the magazines like roid rage and does that really
            i
            innorwall11 ноября 2024 г. 22:12
            Django - Урок 055. Как написать функционал auto populate field Freckles because of several brand names retin a, atralin buy generic priligy
            i
            innorwall11 ноября 2024 г. 18:23
            QML - Урок 035. Использование перечислений в QML без C++ priligy cvs 24 Together with antibiotics such as amphotericin B 10, griseofulvin 11 and streptomycin 12, chloramphenicol 9 is in the World Health Organisation s List of Essential Medici…
            i
            innorwall11 ноября 2024 г. 15:50
            Qt/C++ - Урок 052. Кастомизация Qt Аудио плеера в стиле AIMP It decreases stress, supports hormone balance, and regulates and increases blood flow to the reproductive organs buy priligy online safe Promising data were reported in a PDX model re…
            Сейчас обсуждают на форуме
            i
            innorwall13 ноября 2024 г. 18:52
            добавить qlineseries в функции PMID 35774217 Free PMC article priligy cvs
            i
            innorwall11 ноября 2024 г. 10:55
            Всё ещё разбираюсь с кешем. priligy walgreens levitra dulcolax carbs The third ring was found to be made up of ultra relativistic electrons, which are also present in both the outer and inner rings
            9
            9Anonim25 октября 2024 г. 9:10
            Машина тьюринга // Начальное состояние 0 0, ,<,1 // Переход в состояние 1 при пустом символе 0,0,>,0 // Остаемся в состоянии 0, двигаясь вправо при встрече 0 0,1,>…
            ИМ
            Игорь Максимов3 октября 2024 г. 4:05
            Реализация навигации по разделам Спасибо Евгений!

            Следите за нами в социальных сетях