Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 29, 2014 14:09:19

alien308
Зарегистрирован: 2012-06-23
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Протестировать строку на вхождение символов недопустимых в числах

В читаемом текстовом файле содержатся строки содержащие содержащие только одно или несколько чисел с плавающей точкой и пробельные стмволы и строки содержащие различные буквы. Необходимо различить их. isdigit() как я понимаю тут не подходит.

Отредактировано alien308 (Ноя. 29, 2014 14:14:53)

Офлайн

#2 Ноя. 29, 2014 14:36:45

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Протестировать строку на вхождение символов недопустимых в числах

c:/blah.txt:
123.123 34.5
asd,df fgfj 123.5
123,4

only_float = []
only_char = []
float_and_char = []
def isfloat(value):
    try:
        float(value)
        return True
    except ValueError:
        return False
with open('c:/blah.txt') as f:
    for line in f.readlines():
        if all([isfloat(s) for s in line.split(' ')]):
            only_float.append(line)
        elif all([not isfloat(s) for s in line.split(' ')]):
            only_char.append(line)
        else:
            float_and_char.append(line)
>>> only_float
['123.123 34.5\n']
>>> only_char
['123,4']
>>> float_and_char
['asd,df fgfj 123.5\n']

Офлайн

#3 Ноя. 29, 2014 15:43:50

alien308
Зарегистрирован: 2012-06-23
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Протестировать строку на вхождение символов недопустимых в числах

Спасибо. Сделал по аналогии так:

def isfloats_or_space_or_empty(s):
    try:
        if len(s.strip()) > 0:
            map(float, s.split())
            return True
        else:
            return True
    except:
        return False

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version