我有一个这样的字符串:
la lala 135 1039 921\r\n
我无法删除\r\n
。
最初这个字符串是一个字节对象,但后来我将其转换为了字符串
我尝试使用.strip("\r\n")
和.replace("\r\n", "")
,但什么也没发生...
我有一个这样的字符串:
la lala 135 1039 921\r\n
我无法删除\r\n
。
最初这个字符串是一个字节对象,但后来我将其转换为了字符串
我尝试使用.strip("\r\n")
和.replace("\r\n", "")
,但什么也没发生...
>>> my_string = "la lala 135 1039 921\r\n"
>>> my_string.rstrip()
'la lala 135 1039 921'
使用仅切片末尾的替代方案,这对于字节->字符串情况更有效:
>>> my_string = b"la lala 135 1039 921\r\n"
>>> my_string = my_string.decode("utf-8")
>>> my_string = my_string[0:-2]
>>> my_string
'la lala 135 1039 921'
或者说,甚至是一个正则表达式解决方案,它的效果更好:
re.sub(r'\r\n', '', my_string)
my_string[0:-5]
应该是 my_string[0:-4]
。实际上,由于其被解释为转义序列,应该是 my_string[0:-2]
。否则会修剪过多的内容。 - John Szakmeister.strip("\r\n")
这样的字符串时,这些字符会被解释为转义序列,其中 "\r"
表示回车符(ASCII 表中的 0x0D),而 "\n"
表示换行符(ASCII 表中的 0x0A)。.strip("\\r\\n")
和 .replace("\\r\\n", "")
。.strip()
不是您想要的,因为它影响的不仅仅是字符串的末尾,它会从字符串中移除反斜杠和字母 "r" 和 "n"。在这里使用 .replace()
更好一些,因为它将匹配整个字符串并替换掉它,但它也将在字符串中间匹配 \r\n
,而不仅仅是在末尾。最直接的去除该序列的方法是下面给出的条件语句。.strip()
来移除该序列。.strip()
会将字符串中的所有字符都删除(它将字符串视为一个集合,而不是模式匹配)。更好的选择是使用 .replace()
,或者当检测到其存在时,简单地使用切片表示法从字符串中去除末尾的 "\\r\\n"
。if s.endswith("\\r\\n"):
s = s[:-4]
"return\\r\\n".strip("\\r\\n")
变成了 "etu"
。 - Stefan Pochmann.strip()
在这里是不合适的。 - John Szakmeister'\r\n'
也是.splitlines()的标准行分隔符,因此这也可以起作用。'>>> s = "la lala 135 1039 921\r\n"
>>> type(s)
<class 'str'>
>>> t = ''.join(s.splitlines())
>>> t
'la lala 135 1039 921'
>>> type(t)
<class 'str'>
你也可以确定字符串的长度,比如说20个字符,然后将其截断为18个字符,而不考虑最后两个字符,或者在执行此操作之前验证它们是否是这两个字符。有时候先比较ASCII值会有所帮助,伪代码如下:
如果字符串中的最后一个字符是制表符、回车符、换行符或问号,则将字符串缩短一个字符。重复此过程,直到找不到与制表符、回车符、换行符等匹配的结束字符为止。
.strip()
。 - cs95\r
是一个反斜杠和字母 r 吗?如果是这样,那么你需要将调用更改为.strip("\\r\\n")
或.replace("\\r\\n", "")
。 - John Szakmeistermy_string[0:-5]
。或者使用re.sub(r'\\r\\n', '', mystr)
。 - Cory Madden