2014-09-04 77 views
0

我在Python中有一个系统,这些系统创建一个套接字并从安装在卡车和汽车上的跟踪器接收信息。不能去除字符串中的 r

其中一个跟踪器发送字符串\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') 

那么,是不是分裂我的短信,当我在我的数据库保存这个字符串,我得到一些炭月底:

Database

我该如何处理呢?我卡住了。

回答

0

听起来像这是两个问题。回答第一个可能解决第二个问题。

您是否尝试过使用.rstrip()方法?

your_string.rstrip() 

如果要分割\ r或新行上的行,请使用python分界线。

your_string.splitlines() 
+0

有时候,字符串就像这个“ASDASD \ rDSADAFJASF \ rSDAHGYSD”。所以,这就是为什么我试图首先拆分 – 2014-09-04 13:03:34

+0

在这种情况下,只需使用your_string.splitlines() – 2014-09-04 13:06:40

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'] 

(分裂返回由\r字符分隔的字符串的列表)

>>> s.split('\\r') 
['1\r2\r3\r4'] 

(分裂返回包含整个字符串的列表,因为所请求的\\r分离器未处于有.. )