2017-11-21 13 views
0

私は基本的なテキストファイルを与えられており、各行のすべての単語をプルして行ごとに単語の数を表示するには、Pythonでregexを使用する必要があります。regexを使って複数行テキストファイルの各行の長さを出力するには?

テキストファイル例:

I have a dog. 
She is small and cute, 
and likes to play with other dogs. 

出力例:

Line 1: 4 
Line 2: 5 
Line 3: 7 

任意の助けをいただければ幸いです!

+0

これまでに書いたコードを追加してください。 –

+1

英語の言語は必ずしも良いとは限りません。 _Myers-Briggs_は1つか2つですか? _www.website.com_は1語ですか?ワードカウントマシンは、あなたが望むほど複雑になることができるものです。単純なままにしたい場合は、正規表現はまったく必要なく、 'str.split()'だけです。 –

+0

スペースで区切って、 'sentence.split()' - それはトリックを行うべきです – alfasin

答えて

1

あなたは、デフォルトでは空白の実行に分裂するのawkを試みることができるライン

with open('input_file_name.txt') as input_file: 
line_number = 1 
for line in input_file.readlines(): 
    print('Line {} : {}'.format(line_number,len(line.split(' ')))) 
    line_number +=1 
0
f = open(path_to_text_file, "r") 
counter = 1 
for line in f.readlines(): # read the file line by line 
    print "Line %d: %d" % (counter, len(line.split(" "))) # counts the spaces, assuming that there is only one space between words. 
    counter += 1 
0

を分割しようとすることができます

cat <<EOT | awk '{print NF}' 
> I have a dog. 
> She is small and cute, 
> and likes to play with other dogs. 
> EOT 
4 
5 
7 

NFが常に設定されているawkの変数であります現在のレコードのフィールド数に設定します。

0

これは非常に直感的な正規表現は役立つかもしれない:

\b\w+\b 

それは、単語の境界との間のすべての単語文字に一致します。そこにあるマッチの数を数えるだけです。

あなたは、1つの単語としてハイフン(またはその他の文字)を含む単語を数える文字セットに-を追加したい場合は、次の

\b[\w\-]\b 

または

\b[\w\-'.]\b 

など

あなたはその考えを得る。

+0

これはファイル内のすべての単語を引っ張りますが、行内の単語を数える必要があります。出力の行末を区切るものはありません。 – Zoey

+0

@Zoey Roopakを参照してください。行ごとにファイルを読み込む方法がわからない場合は、Nelliatの答えです。 – Sweeper

関連する問題