Python字符串中括号前的转义(插入反斜杠)
我需要格式化许多包含类似结构的字符串:Python字符串中括号前的转义(插入反斜杠),python,escaping,Python,Escaping,我需要格式化许多包含类似结构的字符串: u'LastName FirstName (Department / Subdepartment)' 我的愿望是让字符串看起来像这样: u'LastName FirstName \(Department / Subdepartment\)' 这意味着我需要在开始括号和结束括号中添加反斜杠 到目前为止,我正在使用Python执行此操作: displayName = displayName.replace('(', '\(').replace(')
u'LastName FirstName (Department / Subdepartment)'
我的愿望是让字符串看起来像这样:
u'LastName FirstName \(Department / Subdepartment\)'
这意味着我需要在开始括号和结束括号中添加反斜杠
到目前为止,我正在使用Python执行此操作:
displayName = displayName.replace('(', '\(').replace(')', '\)').
这看起来不错,但我只是想知道:
有没有更像蟒蛇的方法
我没有找到合适的方法,但可能我找错了地方…您已经找到了最具python风格的方法,regex提供了一个不那么可读的解决方案:
>>> import re
>>> s = u'LastName FirstName (Department / Subdepartment)'
>>> print re.sub(r'([()])', r'\\\1', s)
LastName FirstName \(Department / Subdepartment\)
您已经找到了最具python风格的方法,regex提供了一个不那么可读的解决方案:
>>> import re
>>> s = u'LastName FirstName (Department / Subdepartment)'
>>> print re.sub(r'([()])', r'\\\1', s)
LastName FirstName \(Department / Subdepartment\)
你可以用
例如:
import re
escaped = re.escape(u'LastName FirstName (Department / Subdepartment)')
注:此方法将返回所有非字母数字反斜杠(包括标点和空格)的字符串 尽管这可能对您有用。您可以使用 例如:
import re
escaped = re.escape(u'LastName FirstName (Department / Subdepartment)')
注:此方法将返回所有非字母数字反斜杠(包括标点和空格)的字符串
尽管这可能对您有用。尝试re.escape(string)。尝试re.escape(string)。如果字符串中有其他regex元字符,如
,该怎么办?它们将转义到\。
如果他需要转义括号,我假设其他此类转义可能有用。但是,我可能错了。@Serdalis,我会使用re
,但我只需要转义括号,因为这个字符串将转到LDAP查询。因此,只需对括号进行转义。@Serdalis,另一方面,我确信,我不会在括号内有点,因此我可以使用您的方法。此方法删除空格,有时您希望保留空格。如果字符串中有其他正则表达式元字符,如
,该怎么办?它们将转义到\。
如果他需要转义括号,我假设其他此类转义可能有用。但是,我可能错了。@Serdalis,我会使用re
,但我只需要转义括号,因为这个字符串将转到LDAP查询。因此,只需对括号进行转义。@Serdalis,另一方面,我确信,我的括号内不会有点,所以我可以使用你的方法。这会删除空格,有时你想保留空格。当我尝试这样做时,我得到:LastName FirstName\\(Department/Subdepartment\\)
,但是有两个反斜杠。@Parsa您可能把字符串repr
与实际打印的字符串混淆了。例如<代码>>>>re.sub(r'([()]),r'\\\1',s)u'LastName FirstName\\\(部门/子部门\)\
>>print(re.sub(r'([()]),r'\\\1',s)
LastName FirstName\\(部门/子部门\)
。因此,尝试添加print(…)
,当我尝试此操作时,您会看到它工作正常:LastName FirstName\\(Department/Subdepartment\\)
所以不是一个反斜杠,而是两个反斜杠。@Parsa您可能将字符串repr
与实际打印的字符串混淆了。例如<代码>>>>re.sub(r'([()]),r'\\\1',s)
u'LastName FirstName\\\(部门/子部门\)\
>>print(re.sub(r'([()]),r'\\\1',s)
LastName FirstName\\(部门/子部门\)
。所以试着添加print(..)
,你会发现它是有效的