-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

biryee は正しいです。2 つ目のバックスラッシュでバックスラッシュをエスケープする必要があります。

于 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 に答える