-7

可能重复:
如何在python字符串中引用“\”符号

我有相当大的字符串数据,其中我必须删除除 AZ、az 和 0-9 以外的所有字符。我几乎可以删除每个字符,但 '\' 是个问题。

其他所有字符都被删除,但 '\' 出现问题

def replace_all(text, dic):
    for i, j in dic.iteritems():
        text = text.replace(i, j)
    return text

reps = {' ':'-','.':'-','"':'-',',':'-','/':'-',
        '<':'-',';':'-',':':'-','*':'-','+':'-',
        '=':'-','_':'-','?':'-','%':'-','!':'-',
        '$':'-','(':'-',')':'-','\#':'-','[':'-',
        ']':'-','\&':'-','@':'-','\W':'-','\t':'-'}

x.name = x.name.lower()

x1 = replace_all(x.name,reps)
4

4 回答 4

4

我有相当大的字符串数据,我必须删除除 AZ、az 和 0-9 以外的所有字符

换句话说,您只想保留这些字符。

字符串类已经提供了一个测试“每个字符都是字母还是数字?”,称为.isalnum(). 所以,我们可以filter这样:

>>> filter(str.isalnum, 'foo-bar\\baz42')
'foobarbaz42'
于 2012-04-25T18:42:32.403 回答
2

如果你有一个字符串:

a = 'hi how \\are you'

您可以通过执行以下操作将其删除:

a.replace('\\','')

>'hi how are you'

如果您有遇到问题的特定上下文,我建议您发布更多详细信息。

于 2012-04-25T18:42:23.253 回答
1

birryee 是正确的,您需要用第二个反斜杠转义反斜杠。

于 2012-04-25T18:41:27.060 回答
1

删除除 AZ、az 和 0-9 以外的所有字符

与其尝试列出您要删除的所有字符(这将花费很长时间),不如使用正则表达式来指定您希望保留的那些字符:

import re
text = re.sub('[^0-9A-Za-z]', '-', text)
于 2012-04-25T18:41:33.410 回答