2012-07-12 2 views
2

콘솔에 파일 이름 'xyz.0.html'을 인쇄하려고합니다. 이 디렉토리에서 오류를 "substring not found"python index()가 작동하지 않습니다.

파일을 침된다

xyz.0.html 
xyz.1.html 
xyz.2.html 

파이썬

for name in glob.glob('*html'): 
    if name.index('.0.html'): 
    print name 

답변

2

당신은 아마

if '.0.html' in name: 

또는 문자열이 문자열에없는 경우

if name.endswith('.0.html'): 

버전이 오류가 발생합니다 (그리고 문자열이 시작 부분에있을 경우는 False로 평가합니다 index 메서드는 하위 문자열이있는 문자열에서 색인을 반환하기 때문에 (또는 하위 문자열을 찾을 수없는 경우 예외가 발생합니다.)

+0

넵를 사용할 수 있습니다. 덕분에 :) – dbs

2

if ".0.html" in name: 
    print name 

또는

if name.endswith(".0.html"): 
     print name 
,691 시도
5

str.endswith()을 사용하지 않으시겠습니까?

>>> "xyz.0.html".endswith(".0.html") 
True 
2

오류는 그대로입니다. 문자 "xyz.1.html"name.index('0.html')을 호출하면 문자열을 찾을 수 없습니다. index이 경우 오류가 발생합니다. 이것을 원하지 않으면 대신 find 메서드를 사용할 수 있습니다 (하위 문자열이 없으면 -1을 반환 함). 예외를 catch 할 수 있습니다.

+0

+1 - 이것은 좋은 이유입니다, 다른 답변은 질문의 버전이 틀린 이유가 아니라 다른 일을하는 (더 나은) 방법만을 알려줍니다. –

0

당신은 파이썬의 발생 일

print [name for name in glob.glob('*html') if name.endswith(".0.html")] 
+1

그냥 니트 피킹하는 것, 그것은 발전기가 아닌리스트의 이해입니다. 또한, 이름을 수직 열의 이름과 비교하여 목록으로 인쇄합니다.이 열은 중요하거나 중요하지 않을 수 있습니다. – mgilson

+0

@mgilson 감사합니다,하지만 그것은 발전기처럼 행동하고, 목록을 만듭니다,이 코드의 문제점은 무엇입니까? – Pooya

관련 문제