인프런 커뮤니티 질문&답변

건민님의 프로필 이미지
건민

작성한 질문수

프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)

문자열 파싱2(String Split By Delimiter(Advanced))

정답 오류

작성

·

132

·

수정됨

0

 

in_str = "../source/22-1.txt"

with open(in_str, 'r') as file:

txt = file.read()

txt = txt.replace(","," ")

txt_list = txt.split()

print(txt_list)

print(len(txt_list))

 

 

 

영상속에서는 split()을 기본값으로 설정을 안하고

split(" ") 으로 해서 which\npermits 을 한단어로 인식해 정답이 72로 나오는데 기본값으로 하면 73으로 나옵니다

저거는 왜 인식이 안되서 72가 정답이되는거죠?

정규표현식으로 했을때도

저 단어만 인식을 못하고있습니다

 

답변 2

0

저는 \n, 컴마, 빈칸 으로 나눴고 \n 으로 나눈 경우 대부분 한 칸이 띄어져 있어서 단어의 리스트에 ""이 요소로 잡힙니다. 그래서 그냥 단어 리스트에서 ""를 제거하고 나니 73이 나오네요.

import re

# 방법 1: regular expression 사용
def how_many_words_in_a_text_file(path: str) -> (str, int):
    with open(path, "r", encoding="utf-8") as f:
        text = f.read()
        words = re.split(" |,|\n", text)
        words = [word for word in words if word != ""]
        return (words, len(words))

print(how_many_words_in_a_text_file("../source/22-1.txt"))
---
결과값
(['The', 'adjective', '"deep"', 'in', 'deep', 'learning', 'refers', 'to', 'the', 'use', 'of', 'multiple', 'layers', 'in', 'the', 'network.', 'Early', 'work', 'showed', 'that', 'a', 'linear', 'perceptron', 'cannot', 'be', 'a', 'universal', 'classifier', 'but', 'that', 'a', 'network', 'with', 'a', 'nonpolynomial', 'activation', 'function', 'with', 'one', 'hidden', 'layer', 'of', 'unbounded', 'width', 'can.', 'Deep', 'learning', 'is', 'a', 'modern', 'variation', 'which', 'is', 'concerned', 'with', 'an', 'unbounded', 'number', 'of', 'layers', 'of', 'bounded', 'size', 'which', 'permits', 'practical', 'application', 'and', 'optimized', 'implementation', 'while', 'retaining', 'theoretical'], 73)

# 방법2 : 정규표현식 없이 replace와 split으로

def number_of_words_in_the_text(path: str) -> (str, int):
    with open(path, 'r', encoding="utf-8") as f:
        text = f.read()
        text = text.replace(",", " ").replace("\n", " ")
        words = text.split(" ")
        words = [word for word in words if word != ""]
        return (words, len(words))

print(number_of_words_in_the_text("../source/22-1.txt"))

--- 
결과값
(['The', 'adjective', '"deep"', 'in', 'deep', 'learning', 'refers', 'to', 'the', 'use', 'of', 'multiple', 'layers', 'in', 'the', 'network.', 'Early', 'work', 'showed', 'that', 'a', 'linear', 'perceptron', 'cannot', 'be', 'a', 'universal', 'classifier', 'but', 'that', 'a', 'network', 'with', 'a', 'nonpolynomial', 'activation', 'function', 'with', 'one', 'hidden', 'layer', 'of', 'unbounded', 'width', 'can.', 'Deep', 'learning', 'is', 'a', 'modern', 'variation', 'which', 'is', 'concerned', 'with', 'an', 'unbounded', 'number', 'of', 'layers', 'of', 'bounded', 'size', 'which', 'permits', 'practical', 'application', 'and', 'optimized', 'implementation', 'while', 'retaining', 'theoretical'], 73)

0

좋은사람님의 프로필 이미지
좋은사람
지식공유자

안녕하세요. 건민님 의견 감사합니다.

해당 소스코드 확인 후 오류일 경우 수정해서 반영하겠습니다.

감사드립니다.

건민님의 프로필 이미지
건민

작성한 질문수

질문하기