2017-09-19 8 views
-2

편집 된 질문 : Windows에서 복사 붙여 넣기로 경로 문자열을 가져 와서 역 슬래시가 포함 된 문자열을 사용하는 Python 함수를 작성했습니다. 경로로 파이썬.문자열에서 백 슬래시를 백 슬래시로 바꾸기

def back2forwardSlash(backSlash_string):  
    return backSlash_string.replace('\\', '/') 

무엇 여전히 만족스럽지 못한 것은이다 : 문제는 \ n을 \ B를 ...처럼, 백래쉬 및 기타 문자의 조합으로 Coldspeed에 감사를 발생, 지금 종류의 트릭을 수행하는 기능을 가지고 r 문자열을 원시로 읽으려면이 함수를 호출해야합니다. fileNamePath = back2forwardSlash(r'C:\Users\Dropbox\netCFD4\b30.137.nc') 이렇게하면 문자열에 붙여 넣는 대신 변수를 함수로 전달하지 않습니다. 아니면 적어도 나는 그것에 대한 해결책이 있다고 생각하지 않는다.

+1

'backSlash_string.replace ('\\ ','/ ')'를 사용해 보셨습니까? – GPhilo

+0

다음 조언을 따르십시오. https://stackoverflow.com/a/26867674/4528269 –

답변

1

The pythonic way of doing this would be using string.replace.

def foo(string): 
    return string.replace('\\', '/') 

또한, 귀하의 오류의 원인은 백 슬래시가 자신의 표현을 다르게 해석되는 문자의 그룹입니다 이스케이프 시퀀스의 시작으로 간주 될 수 있다는 것이다. 즉, \b 시퀀스는 별개의 문자가 아니며 한 문자 인 \b 또는 \x08입니다. 따라서 함수에 원시 문자열을 전달하려고합니다.

print(foo(r'C:\Users\Dropbox\netCFD4\b30.137.nc')) 

원시 문자열은 백 슬래시를 그대로 취급합니다. 대안은 모든 백 슬래시를 벗어나는 것입니다.

+0

감사합니다. replace 메소드는 꽤 잘하지만 문제가 실제로는 인수 문자열 앞의'r'을 사용하여 함수를 호출함으로써 해결됩니다. 이것은 변수로 함수를 전달할 수 없기 때문에 부분적으로 만 만족 스럽지만'r' 다음에 수동으로 문자열을 붙여 넣어야합니다. 적어도 나는 해결책이 없다고 생각한다. – Pauli

+0

@Pauli 문자열이 이와 같이 들어 오면 소스에 문제가 있습니다. 또한 변수를 실제 문자열로 만드는 실제 방법이 없습니다 ... –

관련 문제