#python
#python
Вопрос:
def end_aluguer(self, nickname):
a = self.obj_aluguer(nickname)
x = "{},{},{},{},{},{}r".format(int(a.time), a.nickname, a.viatura, a.preco, a.decorrido(), a.update())
y = open("historico.txt", 'a')
y.write(x)
y.close()
Здравствуйте, итак, у меня есть эта функция, и все работает нормально, за исключением случаев, когда она записывает historico.txt он разделяется на две линии:
1607741371, тиаговский, тартаруга, 0.80
,21,0.0
Как я могу заставить его писать только в одну строку? Заранее спасибо за ваше время
Комментарии:
1. Скорее всего, в одном из ваших полей уже есть новая строка — вам нужно удалить ее.
2. Попробуйте
a.preco.strip()
. Кроме того, в зависимости от того, откуда поступают ваши данные, возможно, вы захотите сделать это со всеми своими полями в качестве меры предосторожности.
Ответ №1:
Похоже, ваши данные еще не были полностью очищены — они не были очищены.
В данном случае в одном из ваших полей a.preco
уже есть новая строка (ы) — следовательно, оно записывается в файл, что приводит к прерывистому выводу.
Обычно это:
a.preco.strip()
будет достаточно. Но обратите внимание, что это также удалит все начальные и конечные пробелы (что вы все равно часто хотите сделать).
В противном случае вы можете специально удалить только символы новой строки с конца, используя rstrip
, например:
a.preco.rstrip('n')
и при этом будут сохранены начальные и конечные пробелы.
Кроме того, вы можете захотеть сделать то же самое с другими вашими полями, в зависимости от того, откуда поступают ваши данные и можете ли вы полагаться на то, что они находятся в подходящем формате.
Комментарии:
1. Спасибо! Это работает именно так, как я хотел сейчас.
Ответ №2:
Попробуйте этот код
def end_aluguer(self, nickname):
a = self.obj_aluguer(nickname)
x = "{},{},{},{},{},{}r".format(int(a.time), a.nickname, a.viatura, a.preco, a.decorrido(), a.update())
x = ' '.join(x.split('n')) # remove newline and join into one string
y = open("historico.txt", 'a')
y.write(x)
y.close()
Комментарии:
1. Спасибо! Но я буду использовать код из costaparas, это более понятно для меня, но это тоже работает!