用反斜杠编码字符串的正确方法是什么?

时间:2019-02-08 01:37:56

标签: python encode

在给定的示例中:“ \ info \ more info \ nName” 我怎么把它变成字节

我尝试使用unicode-escape,但这似乎不起作用:(

data = "\info\more info\nName"
dataV2 = str.encode(data)
FinalData = dataV2.decode('unicode-escape').encode('utf_8')
print(FinalData)

这是我应该得到的b'\ info \ more info \ nName' 但是发生了意外情况,我在终端中收到了DeprecationWarnings 我假设这是因为反斜杠导致无效的序列,但是我在项目中需要它们

2 个答案:

答案 0 :(得分:1)

字符前的反斜杠表示试图转义其后的字符以使其成为某种特殊字符。之所以会得到SELECT Name, Count(*) FROM table GROUP BY Name ,是因为Python( finally )最终会导致无法识别的错误转义,而不是将它们当作字符后面的文字反斜杠。

要解决此问题,请将您的反斜杠加倍(不确定是否要换行;如果是这样,请在DeprecationWarning前加倍反斜杠):

n

或者,如果您希望所有的反斜杠都是文字的反斜杠(data = "\\info\\more info\\nName" 不应是换行符),则可以通过在\n前面加上前缀来使用原始字符串:

r

对引号字符本身以外的所有内容禁用反斜杠插值。

请注意,如果您仅在交互式解释器中让data = r"\info\more info\nName" 回显,它将显示反斜杠两倍(因为它隐式使用了data的{​​{1}},这就是您'd复制它)。为避免这种情况,请repr str查看其实际外观:

print

答案 1 :(得分:0)

您可以使用另一个反斜杠转义一个反斜杠。

<h3 text-center>Register new user</h3>

<mat-card>
  <mat-card-content>
    <mat-form-field>

    <mat-error></mat-error>
  </mat-form-field>
  </mat-card-content>

</mat-card>

对于不需要转义的部分,您也可以使用原始字符串。

<mat-xxxx>

请注意,如果最后一个字符是反斜杠,则原始字符串不起作用。