Python的raw string原始字串转化为string一般字符串,还有结尾插入‘\‘的方法,还有把string转化为raw string 您所在的位置:网站首页 python将字符串转为变量 Python的raw string原始字串转化为string一般字符串,还有结尾插入‘\‘的方法,还有把string转化为raw string

Python的raw string原始字串转化为string一般字符串,还有结尾插入‘\‘的方法,还有把string转化为raw string

2024-07-15 04:07| 来源: 网络整理| 查看: 265

文章目录 raw string原始字串转化为normal string一般字符串raw string结尾插入`\`的方法把normal string转化为raw string

raw string原始字串转化为normal string一般字符串

在一些网站回应 或者用户输入的字符串,收到的是raw string,相当于在字串前加r,或者相当于普通字串的\被转意为\\。比如

a = r'abc\n\t123' a # >>> 'abc\\n\\t123' print(a) # >>> abc\n\t123

实际上,想要把a当作正常字串处理。用a.replace无法把r'\\'替换为r'\',因为即使有用r,python依然会把r'\'中的\'做转意处理,造成SyntaxError,不知道算不算是bug。 如果知道raw string中会出现的需要转意的符号,比如可以用a.replace('\\n', '\n')和a.replace('\\t', '\t')分别处理,需要注意a.replace()不会改变a自身,而是返回新的字串。

a = r'abc\n\t123' b = a.replace('\\n', '\n') b # >>> 'abc\n\\t123' print(b) # >>> abc # >>> \t123

好点的解决方法,是用unicode_escape解码:

import codecs b = codecs.decode(a, 'unicode_escape') b # >>> 'abc\n\t123' print(b) # >>> abc # >>> 123 raw string结尾插入\的方法

由于Python会把r'\'中的\'做转意处理,造成raw string中无法以\结尾。

a = r'a\' # >>> SyntaxError: EOL while scanning string literal a = r'a\\' # >>> 'a\\\\' print(a) # >>> a\\

没有找到完美的解决办法…除非不用raw string,比如

a = r'a' + '\\' a # >>> 'a\\' print(a) # >>> a\

或者插入任意字符,再.strip()删掉,或者切片slice出想要的a = r'123\ '[:-1]

a = r'123\ ' a # >>> '123\\ ' a = a[:-1] a # >>> '123\\' 把normal string转化为raw string

如果想要把string转化为raw string,和上面相似的原因,也无法用replace把string转化为raw string。

a = 'abc\n\t123' a # >>> 'abc\n\t123' print(a) # >>> abc # >>> 123

想像上面类似用a.encode('unicode_escape'),输出的结果是bytes而不是string;相反的,如果想用a.decode('unicode_escape'),需要a是bytes;string没有decode方法。但是!,可以把他们连起来用。

a.encode('unicode-escape') # >>> b'abc\\n\\t123' >> 'abc\\n\\t123' print(b) # >>> abc\n\t123

编码解码一遍,内容就变了。 直接强行把bytes转化为str也是可以的

b = str(a.encode('unicode_escape'),'utf-8')

字串格式化也可以,还要去掉两边的'。

b = '%r' %a b # >>> "'abc\\n\\t123'" b.strip('\'') # >>> 'abc\\n\\t123' print(b) # >>> "'abc\\n\\t123'" print(b.strip('\'')) # >>> abc\n\t123

也可以用a.repr()表示方法,然后还要去掉两边的'。

b = repr(a).strip('\'') b # >>> 'abc\\n\\t123'

用b = a.__repr__().strip('\'')也可以,但是引用了私有函数,代码还更长,不推荐。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有