Я хочу знать, как преобразовать строку без десятичных точек в десятичную точку, например, преобразование «1157903» в «1,157903» в питонекак преобразовать строку «1157903» в десятичную «1,157903»
Спасибо ,
Я хочу знать, как преобразовать строку без десятичных точек в десятичную точку, например, преобразование «1157903» в «1,157903» в питонекак преобразовать строку «1157903» в десятичную «1,157903»
Спасибо ,
s = "1157903"
s2 = '{}.{}'.format(s[0],s[1:])
в основном, я пытаюсь выяснить, как получить вход пользователя от пользователя, например «11578930», и конвертировать это, чтобы выглядеть так: «11.1M» – danieltisdale
@ user2093921 - Это похоже на совершенно другую проблему ... – mgilson
знаете ли вы, как бы я решил это? – danieltisdale
"1.157903"
не десятичный, это строка.
Вы хотите преобразовать строку в число или строковое представление числа в строку с десятичной точкой в ней?
Если это первое, то:
>>> s = '115793'
>>> float(s)/10 ** (len(s) - 1)
1.15793
В противном случае:
>>> '{}.{}'.format(s[0], s[1:])
'1.15793'
Другой метод, чтобы избежать копирования строк является использование bytearray
:
>>> ba = bytearray('12345')
>>> ba.insert(1, ord('.'))
>>> ba
bytearray(b'1.2345')
В основном, я пытаюсь выяснить, как получить вход от пользователя, например «11578930», и преобразовать это, чтобы выглядеть так: «11.1M» или «1157893000» в «1.5B» – danieltisdale
Пара больше способов :
>>> s = '115793'
>>> s[0] + '.' + s[1:]
'1.15793'
и
>>> s = '115793'
>>> '.'.join([s[0], s[1:]])
'1.15793'
Обновление на основе комментариев вы добавили на свой вопрос:
from bisect import bisect
_METRIC_PREFIXES = [ # must be in ascending order for bisect
(0, ''), # <blank>
(1, 'da'), # deca
(2, 'h'), # hecto
(3, 'k'), # kilo
(6, 'M'), # mega
(9, 'G'), # giga
(12, 'T'), # tera
(15, 'P'), # peta
(18, 'E'), # exa
(21, 'Z'), # zetta
(24, 'Y'), # yotta
]
_BREAKPOINTS = tuple(10.**item[0] for item in _METRIC_PREFIXES)
def format_numeric_string(s, prec=1):
v = int(s)
i = bisect(_BREAKPOINTS, v)-1
d = _BREAKPOINTS[i]
s = _METRIC_PREFIXES[i][1]
return '{:.{prec}f}{suffix}'.format(v/d, suffix=s, prec=prec)
if __name__ == '__main__':
import random
randigit = lambda: random.choice('123456789')
n_digit_string = lambda n: ''.join(d for _ in xrange(n) for d in randigit())
for s in (n_digit_string(prefix[0]+1) for prefix in _METRIC_PREFIXES):
print '{:,d} --> {}'.format(int(s), format_numeric_string(s))
Образец вывода разной длины случайных числовых строк:
3 --> 3.0
18 --> 1.8da
389 --> 3.9h
3,765 --> 3.8k
2,152,457 --> 2.2M
1,965,289,562 --> 2.0G
7,624,947,619,324 --> 7.6T
7,424,298,578,879,224 --> 7.4P
5,546,663,458,831,949,667 --> 5.5E
4,794,459,711,325,322,715,236 --> 4.8Z
9,992,885,249,921,967,199,174,883 --> 10.0Y
Это глупое использование соединения :). – mgilson
Как я могу ввести ввод, такой как «11578903», и показать вывод как «11.5B» в python?Я пытаюсь преобразовать большое число в сокращенную версию его формы. «123456789101112» станет «123.4B». Я сокращаю число после десятичной точки вместо округления десятичной точки. вход: 1000000 Выход: 1M вход: 2500000,34 выход: 2.5M вход: 532 Выход: 532 вход: 1123456789 выход: 1.1B Благодаря. – danieltisdale
Как преобразовать десятичное число в одно десятичное целое и затем преобразовать его обратно в строку? – danieltisdale
Новые разъяснения, новый ответ. Я бы, вероятно, приблизился к этому следующим образом:
import math
SUFFIXES = ['', 'K', 'M']
def convert(s):
num = s[:len(s) % 3 or 3]
return '{}{}'.format(num, SUFFIXES[int(math.ceil(len(s)/3.0) - 1)])
In [1]: from n import convert
In [2]: print convert('123')
123
In [3]: print convert('123123')
123K
In [4]: print convert('12123')
12K
In [5]: print convert('123123123')
123M
Вы можете найти десятичные числа, используя комбинацию этого и других ответов.
Как вы узнаете, где находится десятичная точка? Есть ли местный вопрос - некоторые используют запятые вместо периодов для такого рода вещей, например. – martineau
В основном, я пытаюсь выяснить, как получить входные данные от пользователя, например «11578930», и преобразовать это, чтобы выглядеть так: «11.1M» – danieltisdale
[XY Problem] (http://meta.stackexchange.com/ вопросы/66377/что-это-The-ху-проблема)? –