2016-10-10 2 views
0

:클래스 개체 목록을 인쇄하려면 마지막 개체 끝 부분의 공간을 지워야합니까? 과 같이 클래스 객체의 목록을 인쇄하려고

for order in location_orders: 
    if (len(location_orders) >= 2): 
     print("{0}\n".format(order)) 
    else: 
     print(order) 
print("-" * 24)  

을 그래서 기본적으로 그것을 밖으로 클래스가 좋은 개체를 인쇄,하지만 내가있을 때 그들을 분리하는 "\ n을"를 추가했다 이상의에서 그 목록. 문제는 이것이 가장 마지막 객체 다음에 "\ n"을 인쇄 할 것이고, 거기서 다른 것을 인쇄 할 수 있도록 플래시가 필요하다는 것입니다.

print("-" * 24) 

print 문과 함께 존재하는 경우에만 이전 빈 줄을 지울 수있는 방법이 있습니까? 또는 새 행으로 주문을 분리 할 수있는 방법이 있습니까? 클래스 객체이기 때문에 인덱스 할 수 없습니다. 따라서 sep = ""함수를 사용할 수 없습니다. 각 포맷 할 필요가 있다면

print " ".join(["{0}".format(order) for order in location_orders]) 

답변

0

이 공간 분리/승을 인쇄합니다. 한 행이 터미널로 보내지면 curses과 같은 플랫폼 관련 라이브러리를 사용하여 다시 작성할 수 있습니다.

하지만 실제로 그렇게 할 필요는 없습니다. 목록이 반복 가능하기 때문에 *args 구문을 사용하여 전체를 단일 print 호출로 압축 해제 할 수 있습니다. 그럼 당신은 그들 사이에서 이중 줄 바꿈을 넣어 sep 인수를 사용할 수 있습니다

print(*location_orders, sep='\n\n') 

을 클래스의 인스턴스가 str로 포맷됩니다, 당신이 작성한하지 않는 한 (하나씩를 포맷 할 때 그들이처럼 클래스에 대한 특이한 __format__ 메소드).

그것을 할 수있는 또 다른 합리적인 방법으로 단일 문자열로 (당신이 발전기 식의 각 인스턴스에서 만드는 것이) 각각의 문자열을 가입 str.join를 사용하는 것 (인수 달리 풀기도 파이썬 2 print 문 작업 것이다) 그 당신은 결국 인쇄 :

print('\n\n'.join(str(order) for order in location_orders)) 

우리가 더 많은 여기에 명시 적으로 문자열로 인스턴스를 회전하고 있기 때문에, 정말 특별한 형식의 코드로 차이를 (보통 format 호출을 한 경우에 우리가 대신 strformat을 사용할 수해야 str과 같음).

+0

죄송합니다. 나는 그 (것)들을 선이 아닌 공간으로 분리하고 싶다고 말하고 싶었습니다. 하지만 그냥 "\ n".join을 사용하면 작동 할 것입니다. –

0

,

print " ".join(location_orders) 

인쇄되어있어 라인을 취소 할 일반적인 방법은 없습니다 :

관련 문제