2017-05-12 4 views
1

더 큰 프로그램의 일부로 문자열에서 모든 구두점을 제거해야합니다. 이 같은 각 마크 serepatly를 쓸 때 그것은 노력하고 있습니다 :파이썬의 모든 문장 부호 제거하기

words = [word.replace(".", "") for word in words] 

을하지만 루프에 그것을하려고 할 때, 그것은 작동하지 않습니다.

line = "I was going to leave her, but in the very last moment I had changed 
my mind. Interesting thing, many nice ways to use." 
words = line.lower().split() 
for punc in [".",","]: 
    if punc in words: 
     words = [word.replace(punc, "") for word in words] 
print words 

는 내가 뭘 잘못 말해 주시겠습니까? 리스트의 한 요소가리스트의 요소 중 임의 punc 포함하지 않으면 punc 경우

+1

, 이것에 대한 단어로 문자열을 분할 먼저 한 다음 –

+1

@Chris_Rands 감사합니다 (속는 참조)해야하는 경우 분할 문장 부호를 제거 할 이유가 없다, 더 많은 코드를 필요로하고 실현하지 못하고 문제를 일으키고 있습니다. 이제는 효과가 있습니다. –

답변

3

translate 당신을 위해 작동합니다

>>line = '''I was going to leave her, but in the very last moment I had changed 
my mind. Interesting thing, many nice ways to use.''' 
>>line = line.translate(None, ',.') 
I was going to leave her but in the very last moment I had changed 
my mind Interesting thing many nice ways to use 
+1

고마워요! 도움이되었습니다. –

+0

당신은 환영합니다 :) – zipa

1

문제는

if punc in words: 

이 확인된다. 그냥 그 라인을 제거하고 작동합니다.

관련 문제