0

pptの内容を保存するファイル名として使用したいので、漢字の問題、またはパワーポイントファイルの特殊文字を処理する次のコードを取得しました。特殊文字が含まれていると何らかの例外がスローされるため、次のコードを使用して処理します。

Python 2.7 では問題なく動作しますが、Python 3.0 で実行すると、次のエラーが表示されます。

    if not (char in '<>:"/\|?*'):
TypeError: 'in <string>' requires string as left operand, not int

エラー メッセージを Google で検索しましたが、解決方法がわかりません。if not (char in '<>:"/\|?*'):コードは文字をASCIIコード番号に変換することだと知っています よね?

Python 3 で私の問題を解決する例はありますか?

def rm_invalid_char(self,str):

    final=""
    dosnames=['CON', 'PRN', 'AUX', 'NUL', 'COM1', 'COM2', 'COM3', 'COM4', 'COM5', 'COM6', 'COM7', 'COM8', 'COM9', 'LPT1', 'LPT2', 'LPT3', 'LPT4', 'LPT5', 'LPT6', 'LPT7', 'LPT8', 'LPT9']
    for char in str:
        if not (char in '<>:"/\|?*'):
            if ord(char)>31:
                final+=char
        if final in dosnames:
            #oh dear...
            raise SystemError('final string is a DOS name!')
        elif final.replace('.', '')=='':
            print ('final string is all periods!')
            pass
    return final
4

3 に答える 3

1

シンプル:これを使う

re.escape(YourStringHere)

ドキュメントから:

英数字以外をすべてバックスラッシュした文字列を返します。これは、正規表現のメタ文字を含む可能性のある任意のリテラル文字列に一致させたい場合に便利です。

于 2013-04-14T00:33:05.003 に答える