2010-06-02 3 views
1

내 파이썬 코드 :반복하는 동안 파이썬이 공백을 추가하는 것을 어떻게 막을 수 있습니까?

mapArray = [["#","#","#"],["#","#","#"],["#","#","#"]] 
for row in mapArray: 
    for cell in row: 
      print cell, 
    print 
print 

인쇄이 :

# # # 
# # # 
# # # 

왜이 :

### 
### 
### 

감사합니다 많이!

+3

참고로 파이썬 문서에는 이와 같은 공간을 추가하기로 결정할 때 어떤 정보가 있습니다. http://docs.python.org/reference/simple_stmts.html#print를 참조하십시오. – WildCrustacean

답변

2

내 선호하는 솔루션은 sys.stdout을 사용하는 것입니다 출력물에 공간이 표시되는 이유입니다.

+1

설명서 견적서를 보내 주셔서 감사합니다. 왜 그런지 알기가 쉽습니다. – Darin

2
print cell, sys.stdout.write(cell)에 변경

. 물론 수입 후 sys. sys.stdout가 선호하는 솔루션이 여기에 이유가

from sys import stdout 
mapArray = [["#","#","#"],["#","#","#"],["#","#","#"]] 
for row in mapArray: 
    for cell in row: 
      stdout.write(cell) 
    stdout.write("\n") 
stdout.write("\n") 

print statement documentation 상태, "A space is written before each object is (converted and) written, unless the output system believes it is positioned at the beginning of a line." : 만 줄 바꿈 또는 공백을 삽입하지 않고 내가 그것을 말해 무엇 인쇄에 파이썬을 원하는

+1

그거 고마워! 는 가장 매력적인 솔루션인가요? – Darin

+3

print는 주어진 객체를 문자열로 변환하는 반면, 파일과 같은 객체의'write' 메소드는 문자열을 취합니다. 'cell'이 무엇인지에 따라'sys.stdout.write (str (cell))'을 원할 수 있습니다. –

+1

@Darin : 당신은 오히려 "9월"과 인쇄 기능에 대한 키워드 인자의 두 가지로 "끝"(이 파이썬 3로 전환하지 않는 게 좋을 경우 가장 매력적 인쇄는 더 이상 문하지만 함수에 없기 때문에 파이썬 3). -9 월 기본적으로 공백 문자를 할당하고, 단부 개행 다음를 "AB"를 반환 \ n을, 그래서 인쇄 ('A', 'B')를 할당되지만 인쇄 ('A', 'B'9 월 = ' ', end =' ')는 후행 개행 문자없이'ab '를 반환합니다. 인쇄는() (인수)는 개행의 결과는 단지 자체에서 사용하는 인쇄로, 출력으로 전송되고 있지 않습니다 파이썬에서 2 – JAB

2

또는 당신은 단순히 문자열을 구축하고 다음을 인쇄 할 join를 사용할 수 있습니다.

>>> mapArray = [["#","#","#"],["#","#","#"],["#","#","#"]] 
>>> print '\n'.join([''.join(line) for line in mapArray]) 
### 
### 
### 
관련 문제