からキーと値のペアを数える:[stringFq]Pythonの - 私は、次のテキストファイル持つテキストファイル
:[DOCID]の各キーのペアは、各文字列が文書に表示された回数である
abstract 233:1 253:1 329:2 1087:2 1272:1
game 64:1 99:1 206:1 595:1
direct 50:1 69:1 1100:1 1765:1 2147:1 3160:1
をこのテキストファイルのキーペアの数はどのように計算できますか?
からキーと値のペアを数える:[stringFq]Pythonの - 私は、次のテキストファイル持つテキストファイル
:[DOCID]の各キーのペアは、各文字列が文書に表示された回数である
abstract 233:1 253:1 329:2 1087:2 1272:1
game 64:1 99:1 206:1 595:1
direct 50:1 69:1 1100:1 1765:1 2147:1 3160:1
をこのテキストファイルのキーペアの数はどのように計算できますか?
正規表現のアプローチは問題ありません。ここでは反復的なアプローチがあります。 printステートメントのコメントを外すと、結果が表示されます。詳細
%%file foo.txt
abstract 233:1 253:1 329:2 1087:2 1272:1
game 64:1 99:1 206:1 595:1
direct 50:1 69:1 1100:1 1765:1 2147:1 3160:1
コード
import itertools as it
with open("foo.txt") as f:
lines = f.readlines()
#print(lines)
pred = lambda x: x.isalpha()
count = 0
for line in lines:
line = line.strip("\n")
line = "".join(it.dropwhile(pred, line))
pairs = line.strip().split(" ")
#print(pairs)
count += len(pairs)
count
# 15
を考えると
我々はを初めて使用10ステートメントは、ファイルを安全に開いたり閉じるためのイディオムです。次に、ファイルをreadlines()
を介して行に分割します。後で使用する条件付き関数(または述語)を定義します。ラムダ式は、便宜上使用し、以下の機能と同等です:
def pred(x):
return x.isaplha()
我々はcount
変数を初期化し、それぞれの行を反復処理を開始します。 dropwhile
にラインを供給する前に、すべての行が改行文字\n
を有することができるので、我々は最初のstrip()
それらを離れて。
dropwhile
は特別itertoolsイテレータです。行を反復するので、述語に合致する先頭の文字は、述語に失敗した最初の文字に達するまで破棄されます。言い換えれば、開始時のすべての文字は、最初の非文字が見つかるまで(スペースであることがあります)削除されます。先頭行のスペースを取り除き、残りの文字列はsplit()
で、リストはpairs
です。
最後の対の各行の長さが漸増count
に添加されます。最終的なカウントは、すべての長さの合計であるpairs
です。
概要
上記のコードは、単純な、反復ステップで扱う基本的なファイルに取り組む方法を示しています。
import re
file = open('input.txt', 'r')
file = file.read()
numbers = re.findall(r"[-+]?\d*\.\d+|\d+", file)
#finds all ints from text file
numLen = len(numbers)/2
#counts all ints, when I needed to count pairs, so I just divided it by 2
print(numLen)
私はあなたのコンピュータをオフにし、紙と鉛筆を得ることをお勧めします。言葉で**を記述する**あなたが手でこの問題を解決する方法。 Python構文については心配しないでください。ソリューションに必要な手順を記述するだけです。 –