2017-09-26 9 views
-1

私は私たちに、複数の区切り文字で文字列を分割しようとしていますが、エスケープされたバックスラッシュ文字については悲鳴を上げます。Python re.split()バックスラッシュをエスケープする

私はPythonでバックスラッシュをエスケープするために見たとき、これは私が正しいことを示したものですように変更するかわからないです...

import re 
def get_asset_str(in_str): 
    split = re.split(' |/|\\' , in_str) 



Traceback (most recent call last): 
    File "AssetCheck.py", line 15, in <module> 
    get_asset_str(line) 
    File "AssetCheck.py", line 4, in get_asset_str 
    split = re.split(' |/|\\' , in_str) 
    File "C:\Python27\lib\re.py", line 167, in split 
    return _compile(pattern, flags).split(string, maxsplit) 
    File "C:\Python27\lib\re.py", line 244, in _compile 
    raise error, v # invalid expression 
sre_constants.error: bogus escape (end of line) 
+0

それはあなたの正規表現でエスケープされている文字を探しているからです。 –

+4

生の文字列 'r '|/| \\''を使用し、1文字の代わりに使用することをお勧めします。 'r '[/ \\]'' –

+0

'|/| \ \\\ '' –

答えて

5

を試してみてください文字列リテラルのレベルで2番目のをエスケープしています。しかし、正規表現エンジンにはが必要です。バックスラッシュもエスケープされています。正規表現の特殊文字でもあります。

「生の」文字列リテラル(例:r' |/|\\')またはバックスラッシュを四捨五入して使用します。

2

はあなたの最初のバックスラッシュ

import re 
def get_asset_str(in_str): 
    split = re.split(r' |/|\\' , in_str) 
0

これは、あなたが欲しいものを行う必要があります。

import re 

in_str = """Hello there\good/morning""" 
thelist = re.split(' |/|\\\\' , in_str) 
print (thelist) 

結果:

['Hello', 'there', 'good', 'morning'] 

は、バックスラッシュをエスケープカッドする必要があります。または、生の入力を使用する(私はこれが良いが、それは私だけ)

関連する問題