我编写了以下Python2.7代码来删除数字和某些字符串中的反斜杠字符(\)。我试图使用str.translate方法,因为我已经知道它非常有效。下面的代码成功删除了字符串x中的数字,但无法删除y中的单个反斜杠。我做错了什么?
import string
x = 'xb7'
y = '\xb7'
print x.translate(None, '\\' + string.digits)
print y.translate(None, '\\' + string.digits)
答案 0 :(得分:1)
您没有任何带反斜杠的字符串。 x
包含字符'x'
,'b'
和'7'
,而y
包含单个字符'·'
,由十六进制代码b7
表示{1}}。如果您想要文本字符串'\xb7'
,其中包含四个字符,请使用原始字符串,方法是在文字前加r
。
>>> import string
>>> print r'\xb7'.translate(None, '\\' + string.digits)
xb
答案 1 :(得分:0)
当实际需要删除反斜杠时,您的算法效果会更好。 Tigerhawk已经向您展示了十六进制字符串。这是另一个简单的示例帮助,显示未更改的原始 y 。
import string
x = 'xb7'
y = '\\xb7'
print x, y
kill = '\\' + string.digits
print "kill", kill
print x.translate(None, kill)
print y.translate(None, kill)
print "y=", y
输出:
xb7 \xb7
kill \0123456789
xb
xb
y= \xb7