jak inne odpowiedzi wyjaśnić, każda linia ma przełamane; gdy masz print
pusty ciąg, dodaje on na końcu linię. Są na to dwa sposoby; wszystko inne jest odmianą tych samych dwóch pomysłów.
Po pierwsze, można rozebrać te znaki nowej linii, jak je czytać:
with open("a.txt") as f:
for line in f:
print line.rstrip()
To usunie wszelkie inne spacje z tyłu, jak spacje lub kartach, a także nowej linii. Zwykle nie przejmujesz się tym. Jeśli tak, prawdopodobnie chcesz użyć trybu nowej linii powszechnej, i zdejmować te nowe linie:
with open("a.txt", "rU") as f:
for line in f:
print line.rstrip('\n')
Jednakże, jeśli wiesz, że plik tekstowy będzie, powiedzmy, Windows nowalinia plik lub native-do -whichever-platform-jestem-running-na-prawo-teraz-nowego wiersza pliku, można rozebrać odpowiednich zakończeń wyraźnie:
with open("a.txt") as f:
for line in f:
print line.rstrip('\r\n')
with open("a.txt") as f:
for line in f:
print line.rstrip(os.linesep)
Innym sposobem, aby to zrobić jest pozostawienie oryginalnego przełamane , i po prostu unikaj drukowania dodatkowego. Możesz to zrobić, pisząc do sys.stdout
z sys.stdout.write(line)
, możesz to zrobić również z poziomu print
.
Jeśli po prostu dodasz przecinek na końcu instrukcji print
, zamiast drukować znak nowej linii, dodaje on "inteligentną przestrzeń". Exactly what that means jest nieco skomplikowany, ale pomysł ma polegać na tym, że dodaje przestrzeń, kiedy powinien, i nic, gdy nie powinien. Jak większość algorytmów DWIM, nie zawsze się to dobrze, ale w tym przypadku, to robi:
with open("a.txt") as f:
for line in f:
print line,
Oczywiście jesteśmy teraz przy założeniu, że nowe linie pliku za dopasować terminal's-jeśli spróbujesz to z, powiedzmy, klasyczne pliki Mac na terminalu Unix, skończysz z każdym drukowaniem linii na ostatnim. Znowu możesz obejść to, używając uniwersalnych znaków nowej linii.
W każdym razie możesz uniknąć magii DWIM inteligentnej przestrzeni, używając funkcji drukowania zamiast instrukcji print. W Pythonie 2.x, dostajesz to za pomocą deklaracji __future__
:
from __future__ import print_function
with open("a.txt") as f:
for line in f:
print(line, end='')
Albo można użyć biblioteki otoki firm trzecich jak six
, jeśli wolisz.
OP wyraźnie wykorzystuje Python 2 i nie jestem pewien, czy sugerowanie 'print_function' dla użytkowników 2.x jest zawsze dobrym pomysłem. Używanie magicznej miękkiej przestrzeni 'print' jest prawdopodobnie złym pomysłem, jeśli najpierw nie dowiesz się, co to znaczy i jak działa. Co oznacza, że twoje jednoznaczne "pisanie" może być najlepszą odpowiedzią (dlatego też przegłosowałem twoją odpowiedź i uważam, że PO miał rację, aby ją zaakceptować). – abarnert
REF https://docs.python.org/2/library/functions.html#print –