サーチ…


備考

IPython(とJupyter Notebook)は、アンダースコアの特別な意味を定義しています。それは常に最新の出力を含んでいます。これは、複数のステップでデータを処理する場合に便利です。これは上の例で実証されています。テキストをクリーンアップするには、いくつかの正規表現を実行し、分割前に正規化します。 IPythonの外側では、各結果を新しい変数に格納するか、ステップをネストする必要があります。 IPythonでは、多くの場合、変数を調べたり、長い一連のネストされた呼び出しを再現することは面倒です。これは下線が現れる場所です。

一つのつまらないことがあります。グローバルスコープのアンダースコアに値を割り当てると、予期しない動作が発生します。例えば:

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

ここでは、タプルの2番目の要素であるポート番号だけに興味があります。だから私は大会に従い、それが使い捨てであることを示すために最初の要素をアンダースコアに割り当てます。ただし、アンダースコアの値は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