문제

텍스트 파일에 글을 쓸 때 일부 파일 .write 인스턴스 뒤에 출력 파일에서 줄 바꿈이 이어지고 다른 파일은 그렇지 않습니다. 나 ~하지 않다 내가 그들에게 발생하도록 지시하는 것을 제외하고는 라인 브레이크를 원합니다. 암호:

    for doc,wc in wordcounts.items(): 
        out.write(doc)             #this works fine, no linebreak
        for word in wordlist: 
            if word in wc: out.write("\t%d" % wc[word]) #linebreaks appear
            else: out.write("\t0")                      #after each of these
        out.write("\n")        #this line had mixed spaces/tabs

내가 무엇을 놓치고 있습니까?

업데이트

나는 코드가 어떻게 붙여 졌는지에 대한 단서를 가져야했다. 어떤 이유로 든 최종 줄에는 공백과 탭이 혼합되어있어 텍스트 메이트에 시각적 "For Word ..."루프 외부에 나타 났지만 통역사는 해당 루프의 일부로 취급하고있었습니다. 공백을 탭으로 변환하면 문제가 해결되었습니다.

입력 해 주셔서 감사합니다.

도움이 되었습니까?

해결책

file.write() 당신이 쓰는 문자열에 어떤 것이 포함되어 있지 않은 경우에도 신자 라인을 추가하지 않습니다. \n에스.

그러나 당신은 당신의 단어 목록에있는 각 단어에 대한 새로운 라인을 사용하여 out.write("\n"), 너가 원하는게 그거야?

    for doc,wc in wordcounts.items(): 
        out.write(doc)             #this works fine, no linebreak
        for word in wordlist: 
            if word in wc: out.write("\t%d" % wc[word]) #linebreaks appear
            else: out.write("\t0")                      #after each of these
            out.write("\n") #<--- NEWLINE ON EACH ITERATION!

아마도 당신은 들여 쓰기를했을 것입니다 out.write("\n") 너무 멀리 ???

다른 팁

당신은 모든 단어 후에 줄 브레이크를 작성합니다.

for word in wordlist:
    ...
    out.write("\n")

이것들은 당신이보고있는 줄 브레이크입니까, 아니면 더 많은 것들이 있습니까?

수행해야 할 수도 있습니다 strip() 각각에 wc[word]. 단일 항목 인쇄 wc 아마도 해당 영역 이이 행동을 일으키는 항목에 이미 줄이 끊어진 지 여부를 결정하기에 충분할 것입니다.

그 또는 당신의 결승에 대한 들여 쓰기 out.write("\n") 의도 한 일을하지 않습니다.

나는 당신의 들여 쓰기가 잘못되었다고 생각합니다.

(또한 나는 당신의 if 절을 중복시키고 코드를 읽을 수 있도록 자유를 얻었습니다 :)

for doc,wc in wordcounts.items()
   out.write(doc)
   for word in wordlist:
     out.write("\t%d" % wc.get(word,0))
   out.write("\n")
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top