2017-09-26 1 views
-1

파이썬이 여러 분리 문자로 문자열을 분할하려하지만 이스케이프 처리 된 백 슬래시 문자에 대해 비명을 지르고 있습니다.파이썬 re.split() 백 슬래시 이스케이프

내가 파이썬에서 백 슬래시를 이스케이프 보았을 때로 변경하는 것을 확실하지 않다,이

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 '|/| \\''그리고 하나의 문자 대신에 더 나은 문자 클래스를 사용하십시오 :'r '[/ \\]'' –

+0

'|/| \ \\\ '' –

답변

5

첫 번째 백 슬래시를 시도 ... 내가 무엇을 보였다 것은 올바른입니다 문자열 리터럴의 레벨에서 두 번째 을 이스케이프합니다. 하지만 정규 표현식 엔진은 이 필요합니다. 백 슬래시도 이스케이프 처리됩니다. 정규 표현식의 특수 문자이기도합니다.

"원시"문자열 리터럴 (예 : 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'] 

백 슬래시를 이스케이프 쿼드해야합니다. 또는 원시 입력을 사용하십시오 (이게 더 좋지만 그게 나에요)

관련 문제