如何使用python替换字符串中的'\ N',因为它会导致unicodeescape错误?

时间:2018-06-15 09:51:45

标签: python regex unicode-escapes

import re

import string

a= """  Message-ID: <13505866.1075863688222.JavaMail.evans@thyme>
Date: Mon, 23 Oct 2000 06:13:00 -0700 (PDT)
From: phillip.allen@enron.com
To: randall.gay@enron.com
Subject: 
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-From: Phillip K Allen
X-To: Randall L Gay
X-cc: 
X-bcc: 
X-Folder: \Phillip_Allen_Dec2000\Notes Folders\'sent mail
X-Origin: Allen-P
X-FileName: pallen.nsf

Randy,

 Can you send me a schedule of the salary and level of everyone in the 
scheduling group.  Plus your thoughts on any changes that need to be made.  
(Patti S for example)

Phillip

""" <br>
s=re.sub('[\\\]+', ' yy', a)
print(s)

错误消息:unicodeescape'解码无法解码位置354-355中的字节:格式错误error image \ N字符空间

我已经尝试过使用不同的反斜杠组合,但它仍然显示相同的错误

2 个答案:

答案 0 :(得分:1)

要在正则表达式中编码文字反斜杠,您需要在普通字符串中使用四个反斜杠(或原始字符串中的两个反斜杠),而不是三个:

s = re.sub('\\\\+', ' yy', a)

s = re.sub(r'\\+', ' yy', a)

你不需要为一个角色设置一个角色类(虽然它也不会造成太大的伤害)。

答案 1 :(得分:0)

导致您的错误消息的问题(在编译期间发生,早在构造也有错误的正则表达式之前(请参阅我的其他答案))就在这一行:

X-Folder: \Phillip_Allen_Dec2000\Notes Folders\'sent mail

这里有一个\N,Python试图将其解释为"\N{GREEK CAPITAL LETTER DELTA}"之类的转义序列,当然也不会这样做。

你需要两个反斜杠来纠正这个问题。

X-Folder: \\Phillip_Allen_Dec2000\\Notes Folders\\'sent mail