2015-07-18 2 views
3

Вот первый код, где напечатан мой выход в следующем порядке:Как удалить лишние пробелы между моими выводами?

import csv 
import random 
import os.path 


def filename(): 

    filename = 'filename.txt' 
    with open ("filename.txt", "r") as data_file: 

     for line in data_file.readlines(): 
      line = line.strip().split() 
      print (line [0], line [1], line[2]) 

Это был выход:

1 63075384 0.781952678 
1 212549126 0.050216027 
2 35003118 0.027205438 
2 230357107 0.065453827 
3 77023025 0.098224352 
3 225622058 0.785312636 

Я тогда хотел рандомизации моего выхода. Итак, вот второй код, где я это сделал:

import random 
with open('filename.txt') as fin: 
    lines = list(fin) 

random.shuffle(lines) 
for line in lines: 
    print (line) 

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

2 35003118 0.027205438 

3 77023025 0.098224352 

2 230357107 0.065453827 

1 212549126 0.050216027 

3 225622058 0.785312636 

1 63075384 0.781952678 

Моим желаемым результатом:

2 35003118 0.027205438 
3 77023025 0.098224352 
2 230357107 0.065453827 
1 212549126 0.050216027 
3 225622058 0.785312636 
1 63075384 0.781952678 

Как я могу изменить второй код, приведенный выше, так что я могу напечатать мой выход без лишних пробелов ?

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

+0

Ваш первый скрипт использует 'trim()', который удаляет новую строку в конце входных строк. Вы не делаете этого во второй программе, поэтому он печатает эту новую строку, а затем 'print()' добавляет свою собственную новую строку. – Barmar

+0

@Barmar Использует 'strip()'. –

ответ

2

Ваши строки содержат символ новой строки в конце, поэтому в этом цикле:

for line in lines: 
    print (line) 

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

for line in lines: 
    print (line.strip()) 
3

Попробуйте это:

import random 

with open('filename.txt') as fin: 
    lines = list(fin) 
    random.shuffle(lines) 
    for line in lines: 
     print(line, end='') 

end='' Установка в print() позволяет избежать печати дополнительную новую строку.

Для получения дополнительной информации см. Python docs on print().

+0

Полезное примечание. Причина, по которой он печатал символы новой строки, заключается в том, что '' \ n'' является значением по умолчанию для 'end'. – tsroten

Смежные вопросы