Найти - Пользователи
Полная версия: работа с rstrip
Начало » Python для новичков » работа с rstrip
1
molebox
Привет.
Не могу понять свою ошибку. Не удаляется конец строки /n - смотрю в дебаггере в Wing IDE
Да и если раскоментирую #int(line) - то напишут про /n
Что я не правильно делаю?

import io
import random
import math
fn = open("number.txt", mode="w")
i = 0
while i<=10:
  plot = str(random.uniform(-10.00,10.00)) + "\n"
  fn.write(plot)
  i = i+1
  
fn.close()
fn2 = open("number.txt")
for line in fn2:
  line.rstrip()
  #int(line) 
fn2.close
dimy44
Строки в питоне это неизменяемая последовательность. Т.е. Вы можете только создать новую строку на основе преобразования старой. Например
new_str = ''.join([line.rstrip() for line in fn2])
molebox
Т.е. нужно копировать из line в новую переменную строку, уже без знака /n ?

Сделал так:
fn2 = open("number.txt")
for line in fn2:
  line2 = line.rstrip()  
fn2.close

Работает! В line2 тоже число что и в line, только без \n . Спасибо, dimy44!
Работает также и пересвоение line, т.е. line= line.rstrip()

——-
Возник другой вопрос:
line = -4.5526186318
Как сделать так, чтобы округлить это значение до -5 и сконвертировать в Int ?

Думаю, что нужно сделать что-то типа этого:
line2 = int(line)
line2 = round(line)
Но возникает ошибка на первой строке: ValueError: invalid literal for int() with base 10: ‘-4.5526186318’

UPDATE:
А-а-а, сглупил Нужно было сначала float использовать, чтобы сконвертировать строку в цифровое значение, а затем уже привести float в Int
  line = float(line) 
  line = int(line)
py.user.next
molebox
Возник другой вопрос:
line = -4.5526186318
Как сделать так, чтобы округлить это значение до -5 и сконвертировать в Int ?
>>> import math
>>> 
>>> n = -4.5526186318
>>> math.floor(n)
-5
>>> type(math.floor(n))
<class 'int'>
>>>
molebox
py.user.next , спасибо. Значит есть несколько способов округления.
Int (n) - округлит до -4
math.floor(n) - округлит до -5
Нужно почитать про них немного.

Я тут вычитал у Марка Лутца, что оказывается, чтобы избавиться от \n , не обязательно использовать rstrip. Когда конвертируешь строковое число с помощью float/int - python автоматом избавляется от \n
py.user.next
molebox
Int (n) - округлит до -4
int не округляет, просто дробную часть отбрасывает
PanovSergey
molebox
Значит есть несколько способов округления.
Еще есть Decimal.quantize()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB