Е
18 октября 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

Добрый день.

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

Е

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

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" уже смысла не имеет и надо идти на начало цикла.

Е

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

Комментарии

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

Здравствуйте, уважаемые пользователи EVILEG !!!

Если сайт вам помог, то поддержите разработку сайта финансово, пожалуйста.

Вы можете сделать это следующими способами:

Спасибо, Евгений Легоцкой

О
18 ноября 2019 г. 15:54
Оксана

C++ - Тест 005. Структуры и Классы

  • Результат:66баллов,
  • Очки рейтинга-1
АГ
18 ноября 2019 г. 15:50
Антон Гурьев

C++ - Тест 001. Первая программа и типы данных

  • Результат:46баллов,
  • Очки рейтинга-6
VZ
17 ноября 2019 г. 2:25
Vladimir Zhitkovsky

Qt - Тест 001. Сигналы и слоты

  • Результат:78баллов,
  • Очки рейтинга2
Последние комментарии
c
18 ноября 2019 г. 6:27
cyberaxe77

Моих знаний пока явно недостаточно, чтобы писать статьи. Так...небольшие заметки "на полях"))).
18 ноября 2019 г. 6:10
Евгений Легоцкой

Пока что на сайте нет активных пользователей PyQt5, кто бы мог писать статьи по PyQt5, к сожалению. Лично я только для статей пользуюсь этой библиотекой. Но можете стать одним из первых ;) Любой…
18 ноября 2019 г. 2:44
Евгений Легоцкой

Добрый день. На тот момент ничего не использовал дополнительно и никаких специальных настроек не делал. Просто собрал и получилось 10 мб.
c
17 ноября 2019 г. 14:25
cyberaxe77

Шикарно! Как обычно всё объясняется чётко, ясно и, по-возможности, кратко. Побольше бы контента по PyQt5...
ГВ
16 ноября 2019 г. 16:16
Гибралтар Вольфрамов

Разрешите узнать, как вы получили qt+qml приложение размером в 10мб(даже релизных). Дело в том, что пустое приложение, хоть и со стек вью, обходится мне на все 40мб пространства. Или же вы воспо…
Сейчас обсуждают на форуме
Е
19 ноября 2019 г. 5:37
Евгений_Канусовский@1981

Добрый день! Не подскажите можно ли на форме Qt Designer расположить график построенный с помощью библиотеки tkinter?
19 ноября 2019 г. 5:13
Евгений Легоцкой

Привет. Недостаточно иноформации. Нужно описание метода в C++, а также код, вызывающий метод в QML
19 ноября 2019 г. 5:04
Евгений Легоцкой

label - это GUI элемент в данном случае? Если так, то я бы не стал раскидывать GUI элементы в разные потоки. Дело в том, что в документации на Qt, сказано, что GUI элементы работают только в GUI…
MP
19 ноября 2019 г. 4:13
Mikhail Petrov

Без разницы в дизайнере создается форма или не в дизайнере. Как вы добавляете в QTabWidget?
19 ноября 2019 г. 2:36
BlinCT

Всем привет. Если кто дебажил qml часть подскажиет пожалуйста, какие настрйоки требуются в Qt Creator? Я собирал 5.12.5 из исходников, в Настройкс в debugger у меня выставлен путь к со…
EVILEG
О нас
Услуги
© EVILEG 2015-2019
Рекомендует хостинг TIMEWEB