การพิมพ์เอาต์พุตในหนึ่งบรรทัดจากอินพุตมาตรฐานใน python

ฉันต้องการอ่านบรรทัดจากอินพุตมาตรฐาน เช่น สตริงที่คั่นด้วยเครื่องหมายจุลภาค แล้วพิมพ์บรรทัดเดียวกันพร้อมคำเพิ่มเติมในหนึ่งบรรทัด อย่างไรก็ตาม เมื่อพิมพ์ออกมา คำเพิ่มเติมจะพิมพ์ออกมาในบรรทัดใหม่เสมอ แต่ฉันต้องการพวกมันในบรรทัดเดียว

นี่คือรหัสของฉัน

while 1:
try:
    line = sys.stdin.readline()
except KeyboardInterrupt:
    break

if not line:
    break

additional = "END"
print(line+additional)

และเมื่อฉันลอง:

>>python3.4 output.py
>>a, b
>>a, b
>>END
>>

แต่ฉันต้องการมัน:

>>python3.4 output.py
>>a, b
>>a, bEND

person adomasb    schedule 14.08.2014    source แหล่งที่มา


คำตอบ (1)


ค่า line ของคุณ มีอักขระขึ้นบรรทัดใหม่; ตัดมันออกจากค่า:

print(line.rstrip('\n') + additional)

str.rstrip() ลบอักขระออกจากส่วนท้าย; ที่นี่เราขอให้ลบบรรทัดใหม่ทั้งหมดออกจากส่วนท้ายของ line; มันจะส่งคืนวัตถุสตริงโดยลบอักขระขึ้นบรรทัดใหม่เหล่านั้น

การสาธิต:

>>> line = 'Hello, world!\n'
>>> line.rstrip('\n')
'Hello, world!'
>>> additional = 'END'
>>> print(line + additional)
Hello, world!
END
>>> print(line.rstrip('\n') + additional)
Hello, world!END
person Martijn Pieters    schedule 14.08.2014
comment
ขอบคุณมาก! ฉันมีความรู้สึกของ 'ตัวละครบรรทัดใหม่พิเศษ' - person adomasb; 14.08.2014