수색…


비고

IPython (및 Jupyter Notebook)은 밑줄에 대한 특별한 의미를 정의합니다. 항상 최신 출력을 포함합니다. 이는 여러 단계로 데이터를 처리 할 때 유용합니다. 이는 위의 예에서 설명됩니다. 텍스트를 정리하려면 몇 가지 정규 표현식을 통해 실행 한 다음 분할 전에 정규화합니다. IPython 밖에서는 각 결과를 새 변수 또는 중첩 된 단계에 저장해야합니다. IPython에서 종종 우리는 변수를 추적하거나 긴 일련의 중첩 호출을 재생산하는 일이 지루합니다. 그래서 이것은 밑줄이 나타나는 곳입니다.

하나의 잡았다. 전역 범위에서 밑줄에 값을 할당하면 예기치 않은 동작이 발생합니다. 예 :

address = ('http://example.com', 80)
(_, port) = address

여기서는 튜플의 두 번째 요소 인 포트 번호에만 관심이 있습니다. 따라서 나는 관습을 따르고 밑줄에 첫 번째 요소를 지정하여 그것이 쓰레기임을 나타냅니다. 그러나 이제 밑줄의 값은 http://example.com 입니다. 그리고 더 많은 코드를 실행한다면 :

1+4

밑줄의 예상 값은 5가됩니다. 그러나 그렇지 않습니다. 값은 여전히 ​​튜플의 도메인입니다. 전역 범위의 밑줄에 할당하면 값을 혼란시킬뿐만 아니라 가장 최근 출력을 저장하지 않습니다. 함수 나 루프 내부의 밑줄에 대입 할 경우에는 그렇지 않습니다.

IPython에서 밑줄의 특별한 사용

from urllib.request import urlopen
from collections import Counter
import re

conn = urlopen('http://textfiles.com/100/dodontae.hum')
lines = conn.readlines()
conn.close()

# readlines() returns byte strings
data = ''.join([line.decode('utf-8') for line in lines]) 

# replace non-letters with a space
re.sub('[^A-Za-z]', ' ', data) 

# condense successive whitespace into a single space
# the underscore retrieves the most recent output 
re.sub('\s+', ' ', _)

# normalize the text by lowercasing and removing leading and trailing whitespace
_.lower().strip()

# split into words on space
words = _.split(' ')

from collections import Counter
word_count = Counter()

for word in words:
    word_count[word[0]] += 1

word_count.most_common()


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow