Давайте сформулируем это как ответ.Проблема не в \r\n
.Проблема в том, что вы пытаетесь разобрать строку, которая содержит значение с плавающей точкой, как целое число.См. (Без перевода строки, символы новой строки):
>>> int("2100.00")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '2100.00'
(как вы можете видеть, кавычки '
не являются частью значения, они просто указывают, что вы имеете дело сстрока)
, тогда как
>>> int("2100\r\n")
2100
Документация гласит:
Если аргумент является строкой, он долженсодержит возможно десятичное число со знаком, представимое в виде целого числа Python, возможно, встроенное в пробел.
, где можно найти буквальное определение целого числа Python здесь .
Решение:
Использование float
:
>>> float("2100.00\r\n")
2100.0
, затем вы можете преобразовать его в целое число, если хотите (также рассмотрите round
):
>>> int(float("2100.00\r\n"))
2100
Преобразование значения с плавающей запятой в целочисленные произведения (из документации ):
Преобразование с плавающей запятойчисла до целых усеченных (до нуля).