Простой Python Вопрос об индексе строки - PullRequest
0 голосов
/ 19 июня 2020

У меня есть строка:

119.95119.95

Эта строка не всегда одинакова и будет меняться в зависимости от ввода. Тем не менее, он всегда будет иметь две остановки, и нам всегда будет нужен только 2.dp

Результат, которого я пытаюсь достичь:

119.95,119.95

Я уверен, что это что-то простое. Я пробовал использовать:

'{:,.2f}'.format(int(price))

, однако все итерации моих попыток вернули ошибки.

Ответы [ 2 ]

0 голосов
/ 19 июня 2020
s = "119.95119.95"

Получите индекс первого . и добавьте 3, чтобы перейти к первому символу во втором числе:

i = s.find(".") + 3

Используйте индекс, чтобы разрезать строку:

first = float(s[:i])
second = float(s[i:])

Использование float() гарантирует, что фрагменты на самом деле являются числами с плавающей запятой. Если преобразование завершится неудачно, будет сгенерировано исключение ValueError.

Распечатайте срезы и добавьте , между ними:

print(f"{first:.2f},{second:.2f}")
0 голосов
/ 19 июня 2020

Вы не можете напрямую преобразовать указанную выше строку в форматированное целое число.

Смотрите, что в этой строке есть 2 десятичных знака, которые не могут присутствовать ни в каком числе, и поэтому это должно дать вам ошибку.

Теперь чтобы получить ожидаемый результат из входной строки, вот подход:

  1. Найти индекс первого .
  2. получить первое число, которое будет до найденного индекса + 2
  3. второе число будет оставшейся строкой.

@ MateenUlhaq также сделал то же самое в приведенном выше комментарии.

Вот код, который не требует пояснений, и вы можете использовать:

myString = "119.95119.95"
firstDotIndex = myString.find(".")

number1 = myString[: firstDotIndex+3]
number2 = myString[firstDotIndex+3 : ]

print("{0}, {1}".format(number1, number2))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...