받은 문자열에서 숫자가 포함 된 모든 단어를 제거하는 간단한 프로그램을 작성하려고합니다.
내 현재 구현은 다음과 같습니다.
import re
def checkio(text):
text = text.replace(",", " ").replace(".", " ") .replace("!", " ").replace("?", " ").lower()
counter = 0
words = text.split()
print words
for each in words:
if bool(re.search(r'\d', each)):
words.remove(each)
print words
checkio("1a4 4ad, d89dfsfaj.")
그러나이 프로그램을 실행하면 다음과 같은 출력이 나타납니다.
['1a4', '4ad', 'd89dfsfaj']
['4ad']
'4ad'
숫자가 포함되어 있고 목록에서 제거되어야하므로 두 번째 줄에 인쇄되는 이유를 알 수 없습니다 . 어떤 아이디어?
정규식이 원하는 작업을 수행한다고 가정하면 반복하는 동안 제거하지 않도록이 작업을 수행 할 수 있습니다.
import re
def checkio(text):
text = re.sub('[,\.\?\!]', ' ', text).lower()
words = [w for w in text.split() if not re.search(r'\d', w)]
print words ## prints [] in this case
또한 text = text.replace(...)
라인을 단순화했습니다 .
또한 text
변수 를 재사용 할 필요가없는 경우 정규식을 사용하여 직접 분할 할 수 있습니다.
import re
def checkio(text):
words = [w for w in re.split('[,.?!]', text.lower()) if w and not re.search(r'\d', w)]
print words ## prints [] in this case
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다