-4

str.count(sub [、start [、end]])を使用して文字の出現をカウントする方法を知っていますが、文字列内の文字で始まる単語をカウントする簡単な方法はありますか?

b = "this is 100 111 123 test data"
sum(1 for word in b.split() if word.startswith('t'))
2
sum(1 for word in b.split() if word.startswith('1'))
3

動作しますが、この割り当てには合計またはstartswithを使用せずにカウントすることになっていると思います。

4

4 に答える 4

3

あなたの文字列を

instr="str.count(sub[, start[, end]]) を使用して文字の出現をカウントする方法は知っていますが、文字列内の文字で始まる単語をカウントする簡単な方法はありますか?"

文字列内の文字で始まるすべての単語を数える必要がある場合は、次のvowels=set("aeiou")ようにすることができます

>>> sum(1 for c in re.findall("(\w)\w*",instr) if c in vowels)
11

数字で始まるすべての単語を検索する場合は、

sum(1 for c in re.findall("(\d)\w*",instr) if c in vowels)
于 2012-04-15T21:02:03.893 に答える
2

私は次のようにします:

 s = 'this is a test'
 sum(1 for word in s.split() if word.startswith('t'))
于 2012-04-15T20:42:31.250 に答える
0

私があなたの質問を理解したと仮定すると(例が役に立ちました)、次のようなことを試すことができます:

 s = 'this is a test'
 target = 't'
 sum([i[0].count(target) for i in s.split()])

文字列内の 2 つの単語が対象の文字 ('t') で始まっていることがわかります

 sum([1 for i in s.split() if i[0] == target])

同等ですが、よりきちんとしたソリューションです(ただし、コメントで指摘されているのと同じ問題に悩まされています)

于 2012-04-15T20:38:55.463 に答える
-1

まず、各開始文字を取得する必要があります。これには、テキストでリスト内包表記を使用できます。

In [40]: tgt="This is an example text. There are several words starting with letters."

In [41]: fl=[word[0] for word in tgt.split()]

In [42]: fl
Out[42]: ['T', 'i', 'a', 'e', 't', 'T', 'a', 's', 'w', 's', 'w', 'l']

今それらを数えます。

個々の文字については、生成されたリストで count メソッドを使用してください。

In [43]: fl.count('T')
Out[43]: 2

すべての文字について、セットと辞書を使用するだけです。

In [50]: d={}

In [51]: for l in set(fl):
            d[l]=fl.count(l) 

In [52]: d
Out[52]: {'T': 2, 'a': 2, 'e': 1, 'i': 1, 'l': 1, 's': 2, 't': 1, 'w': 2}
于 2012-04-15T21:29:18.440 に答える