- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
# ~*~ coding: utf8 ~*~
def clear_string(str, to_int = None):
'''
Чистим строку от "мусора" - нечисловых символов.
'''
new_str = ''
for s in str:
# сначала ищем точку (вдруг число с плавающей точкой)
# при этом в новой строке не должно быть больше одной точки
# и в условии to_int не определен
if s == '.' and '.' not in new_str and not to_int:
new_str += s
else:
try:
i = int(s)
new_str += s
except:
pass
return new_str
def str_to_int(str):
'''
Преобразование стоки в целое число
'''
# попробуем воспользоваться самым простым методом
try:
return int(str)
except:
# если не получилось, то проверяем почему? допускаем, что было передано не целое число в строке
if '.' in str:
str = str[0:str.find('.')]
return str_to_int(str)
else:
# если уж совсем дела плохи, то возвращаем 0
return 0
def check_int(str):
try:
int(str)
return True
except:
return False
def str_to_float(str):
'''
Преобразование стоки в число с плавающей точкой
'''
# попробуем воспользоваться самым простым методом
try:
return float(str)
except:
# других вариантов не осталось. скорее всего функция приняла на входе мусор
return 0
def check_float(str):
try:
float(str)
return True
except:
return False
# есть у нас незатейливая строка
str = 'a23d.d.5ff6'
# проверяем функцию чистки строки
print('Чищеная строка: %s' % clear_string(str))
print('Чищеная строка с to_int: %s' % clear_string(str, to_int=True))
# до преобразования строки в число следовало бы почистить ее
print('Преобразуем мусор в целое число: %s' % str_to_int(str))
print('Преобразуем чищеную строку в целое число: %s' % str_to_int(clear_string(str)))
# преобразуем строку в число с плавающей точкой
print('Преобразуем мусор в число с плавающей точкой: %s' % str_to_float(str))
print('Преобразуем чищеную строку в число с плавающей точкой: %s' % str_to_float(clear_string(str)))
print('Проверяем, является ли содержимое строки целочисленным: %s' % check_int(str))
print('Проверяем, является ли содержимое чищеной строки целочисленным: %s' % check_int(clear_string(str, to_int=True)))
print('Проверяем, является ли содержимое строки числом с плавающей точкой: %s' % check_float(str))
print('Проверяем, является ли содержимое чищеной строки числом с плавающей точкой: %s' % check_float(clear_string(str)))
http://www.haikson.com/blogs/hektor/programming/python/python-preobrazovanie-stroki-v-chislo/
JuiceRU 04.03.2014 10:22 # 0
guest 04.03.2014 13:32 # −2
Bart 05.03.2014 13:47 # +1
И неплохо код доставит, когда в числе разделителем будет запятая, например...
guest 05.03.2014 21:01 # +1
gost 15.03.2014 19:16 # 0
Чищеная строка с to_int: 2356