Запись на Python в две строки вместо одной

#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, это более понятно для меня, но это тоже работает!