2010-11-19 4 views
1

나는 파이썬 2.7에서 anagram 솔버를 연구 해왔고, 내가 설명을 찾을 수 없었다는 호기심에 빠져 들었다. 파이썬은 분명 모든 것을 코멘트파이썬에서 앞으로 슬래시 바꾸기()

# anagram 
# anagram 
# anagram 
. 
. 
. 
etc 

직접 문자열로이 글을 읽고, 그래서를 찾으려고 노력) (대체 놀고 있었는데 :이 프로그램은 지금과 같은 형식으로 아나그램의 목록이 들어있는 파일에서 읽어 해시 문자를 제거하는 방법. 시도 중 ...

string = file.read().replace('#', '') 

... 빈 문자열이 생성됩니다. 나는 해시 앞에 백 슬래시를 사용하려고하지만 놓 쳤어 내게 결과 준 슬래시, typo'd : 불필요한 문자를 스트리핑

string = file.read().replace('/#', '') 
string = '#\tanagram\n#\tanagram\n#\tanagram' 

은 그 시점에서 생각할 필요하고 프로그램의 작동 없었다을 아주. 그러나 나는 완전히 이해하지 못하는 코드 라인을 사용하여 만족하지 못한다. 나는 많은 문서 나 코드를 찾지 못 했으므로 설명이 잘못되었거나 잘못되었으므로 잘못된 장소를 찾고 있거나 잘못된 것을 찾고 있습니다.

누구나 왜 이런 행동을 할 수 있을까요?

+0

두 번째 예제에서 'replace'는 아무것도 대체하지 않고 원본 문자열을 반환합니다. 파일에서 '/ #'시퀀스가 없기 때문입니다. – SilentGhost

+0

#은 파이썬에서 소스 코드에서만 특수하며 파일에서 읽은 문자열에서는 사용할 수 없습니다. –

답변

0

'#''/#'으로 바꿀 때 다른 것을 바꿨습니까? 프로그램을 그대로 실행하고 /을 삭제 해보십시오. #은 파이썬 문자열에서 특수 문자가 아닙니다.

문자열에 '/#'의 인스턴스가 없기 때문에 Google에 표시 한 코드는 대체에 아무런 변화가 없습니다.

샘플 대화 형 세션 :

>>> "#foo bar\n\t#blah".replace("#", "") 
'foo bar\n\tblah' 
+0

답장을 보내 주셔서 감사합니다, Nathon. 앞서 언급 한 슬래시를 제거하면 빈 문자열이됩니다. 다른 변경 사항은 없습니다. –

+0

@Vulpine : no repro. 실제 파일 내용을 표시하십시오. 빈 문자열을 반환하는'replace'는 특별한 것이다. – SilentGhost

+0

@Vulpine : 파일을 ASCII로 인코딩 했습니까? – nmichaels

3

이 시도 :

[s.lstrip('#\t') for s in file.read().split('\n')] 

파이썬 문자열 내부에 어떠한 방법으로 특별히 #을 취급하지 않습니다, 당신은 탈출 할 필요가 없습니다.

관련 문제