0

これで改行を取り除く方法を誰か教えてもらえますか? 文字列がエコーされるたびに、改行があります。基本的に空キャラ。どうすればそれを取り除くことができますか?

from socket import *
import threading
import thread

def handler(clientsock,addr):
    while 1:
        data = clientsock.recv(BUFSIZ)
        if not data:
            break
        msg = data
        print msg
        clientsock.send(msg)
    clientsock.close()

if __name__=='__main__':
    host = 'localhost'
    port = 20000
    BUFSIZ = 1024
    ADDR = (host, port)
    serversock = socket(AF_INET, SOCK_STREAM)
    serversock.bind(ADDR)
    serversock.listen(2)

print 'Version 0.1','-',host,':',port

while 1:
    clientsock, addr = serversock.accept()
    print 'initiated',addr[0],'on',addr[1]
    thread.start_new_thread(handler, (clientsock, addr))
4

2 に答える 2

3

交換

print msg

sys.stdout.write(msg)

明らかにimport sys上に。改行が表示される理由は、使いやすさのためprintにすべての印刷に自動的に追加されるためです。sys.stdout.writeこれはしません。

于 2012-08-25T01:57:04.727 に答える
0

@nightcracker はすでに質問に答えています。別の可能な解決策をここに残しておきたいと思います。ステートメントの後にカンマを追加してprint、文字列の後に改行を追加しないようにすることができます。

print msg, # <- notice the comma

言語リファレンスから:

ステートメントがコンマで終わっていない限り、文字'\n'は最後に書かれます。printこれは、ステートメントにキーワードのみが含まれている場合の唯一のアクションですprint

于 2012-08-25T02:22:39.610 に答える