我在python中有一个系统,这些系统创建一个套接字并从卡车和汽车中安装的跟踪器接收信息。
其中一个跟踪器,使用\r
作为分隔符发送字符串。但是,当我得到这个字符串时,我会尝试将该字符串拆分为\r
,但不能正常工作。
所以我试图从我的琴弦中剥离这些字符,但也不起作用。这是我的代码的一小部分:
try:
self.msg = self.client_conn.recv(settings.CONNECTION["BYTES_TO_RECEIVED"])
# Se não ter nenhuma mensagem, sai fora do loop
if not self.msg:
break
# Faz a validação da mensagem
if self.validate_message():
# Loop para passar por cada linha
for self.msg in self.split_messages():
# Remove outros caracteres
self.msg = str(self.msg).strip('\r\n').replace("\r", "")
print "Mensagem: " + repr(self.msg)
# Insere na fila
self.insert_queue()
# Continua o loop
continue
except:
# Insere nos logs
logger.Log(
logger.Log.LISTENER,
logger.Log.WARNING,
"O TRACKER %s:%s FECHOU A CONEXÃO" % self.client_info
)
# Sai do loop
break
我的函数split_message是这样的:
def split_messages(self):
# Retorna o split das linhas
return self.msg.split('\\r')
所以,我的消息没有被拆分,当我在数据库中保存这个字符串时,我最后得到一些字符:
我该如何处理?我被卡住了。
答案 0 :(得分:0)
听起来这是两个问题。回答第一个可能解决第二个问题。
您是否尝试过使用 .rstrip()方法?
your_string.rstrip()
如果要分割\ r或\ n新行上的行,请使用python splitlines。
your_string.splitlines()
答案 1 :(得分:0)
你的问题在于这个功能:
def split_messages(self):
# Retorna o split das linhas
return self.msg.split('\\r')
请注意,您没有拆分单个字符\r
,而是尝试拆分一对字符\\r
(第一个斜杠将第二个斜杠转义为文字斜杠字符)。
>>> s = "1\r2\r3\r4"
>>> s.split('\r')
['1', '2', '3', '4']
(split返回由\r
字符分隔的字符串列表)
>>> s.split('\\r')
['1\r2\r3\r4']
(split返回一个包含整个字符串的列表,因为请求的\\r
分隔符不在那里......)