Hướng dẫn how to count multiple strings in python - cách đếm nhiều chuỗi trong python

Trong Python 2.7, đã đưa ra chuỗi này:

Spot là một con chó nâu. Spot có mái tóc nâu. Tóc của Spot có màu nâu.

Điều gì sẽ là cách tốt nhất để tìm thấy số tiền của "spot" s, "brown" s và "tóc" s trong chuỗi? Trong ví dụ, nó sẽ trả lại 8.

Tôi đang tìm kiếm một cái gì đó như

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
2 nhưng hoạt động với "các chuỗi được tìm thấy" trong một danh sách hoặc danh sách.

Thanks!

Đã hỏi ngày 19 tháng 3 năm 2013 lúc 0:44Mar 19, 2013 at 0:44

Hướng dẫn how to count multiple strings in python - cách đếm nhiều chuỗi trong python

DharmaturtledharmaturtleDharmaTurtle

5.7326 Huy hiệu vàng32 Huy hiệu bạc51 Huy hiệu Đồng6 gold badges32 silver badges51 bronze badges

4

Điều này làm những gì bạn yêu cầu, nhưng lưu ý rằng nó cũng sẽ đếm các từ như "lông", "browner", v.v.

>>> s = "Spot is a brown dog. Spot has brown hair. The hair of Spot is brown."
>>> sum(s.count(x) for x in ("Spot", "brown", "hair"))
8

Bạn cũng có thể viết nó dưới dạng

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
3

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8

Một giải pháp mạnh mẽ hơn có thể sử dụng gói NLTK

>>> import nltk  # Natural Language Toolkit
>>> from collections import Counter
>>> sum(x in {"Spot", "brown", "hair"} for x in nltk.wordpunct_tokenize(s))
8

Đã trả lời ngày 19 tháng 3 năm 2013 lúc 0:50Mar 19, 2013 at 0:50

Hướng dẫn how to count multiple strings in python - cách đếm nhiều chuỗi trong python

John La Rooyjohn La RooyJohn La Rooy

288K51 Huy hiệu vàng359 Huy hiệu bạc500 Huy hiệu Đồng51 gold badges359 silver badges500 bronze badges

4

Tôi có thể sử dụng

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
4:

s = 'Spot is a brown dog. Spot has brown hair. The hair of Spot is brown.'
words_we_want = ("Spot","brown","hair")
from collections import Counter
data = Counter(s.split())
print (sum(data[word] for word in words_we_want))

Lưu ý rằng điều này sẽ bị đánh số dưới 1 kể từ

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
5 và
>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
6 là các mục truy cập riêng biệt.

Một giải pháp ít thanh lịch hơn một chút mà không vượt qua dấu câu sử dụng regex:

>>> len(re.findall('Spot|brown|hair','Spot is a brown dog. Spot has brown hair. The hair of Spot is brown.'))
8

Bạn có thể tạo ra regex từ một tuple chỉ bằng

'|'.join(re.escape(x) for x in words_we_want)

Điều tốt đẹp về các giải pháp này là chúng có độ phức tạp thuật toán tốt hơn nhiều so với giải pháp của Gnibbler. Tất nhiên, điều này thực sự hoạt động tốt hơn trên dữ liệu trong thế giới thực vẫn cần được đo bằng OP (vì OP là người duy nhất có dữ liệu trong thế giới thực)

Đã trả lời ngày 19 tháng 3 năm 2013 lúc 0:49Mar 19, 2013 at 0:49

Hướng dẫn how to count multiple strings in python - cách đếm nhiều chuỗi trong python

2

Trong hướng dẫn này, chúng tôi sẽ tìm hiểu về phương thức Count () chuỗi Python với sự trợ giúp của các ví dụ.

Phương thức

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
7 trả về số lần xuất hiện của chuỗi con trong chuỗi đã cho.

Thí dụ

message = 'python is popular programming language'

# number of occurrence of 'p' print('Number of occurrence of p:', message.count('p'))

# Output: Number of occurrence of p: 4


Cú pháp của số lượng chuỗi

Phương pháp cú pháp của phương pháp

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
7 là:

string.count(substring, start=..., end=...)

Count () tham số

Phương thức

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
7 chỉ yêu cầu một tham số duy nhất để thực thi. Tuy nhiên, nó cũng có hai tham số tùy chọn:

  • Chất nền - chuỗi có số lượng sẽ được tìm thấy. - string whose count is to be found.
  • Bắt đầu (Tùy chọn) - Chỉ mục bắt đầu trong chuỗi nơi tìm kiếm bắt đầu. - starting index within the string where search starts.
  • Kết thúc (Tùy chọn) - Chỉ mục kết thúc trong chuỗi nơi tìm kiếm kết thúc. - ending index within the string where search ends.

Lưu ý: Chỉ mục trong Python bắt đầu từ 0, không phải 1. Index in Python starts from 0, not 1.


Đếm () Giá trị trả về

Phương thức

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
7 Trả về số lần xuất hiện của chuỗi con trong chuỗi đã cho.


Ví dụ 1: Số lượng xuất hiện của một chuỗi con đã cho

# define string
string = "Python is awesome, isn't it?"
substring = "is"

count = string.count(substring)

# print count print("The count is:", count)

Đầu ra

The count is: 2

Ví dụ 2: Số lần xuất hiện của một chuỗi con nhất định bằng cách sử dụng bắt đầu và kết thúc

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
0

Đầu ra

>>> sum(map(s.count, ("Spot", "brown", "hair")))
8
1

Ví dụ 2: Số lần xuất hiện của một chuỗi con nhất định bằng cách sử dụng bắt đầu và kết thúc

Và, nó kết thúc trước vị trí chỉ số

>>> import nltk  # Natural Language Toolkit
>>> from collections import Counter
>>> sum(x in {"Spot", "brown", "hair"} for x in nltk.wordpunct_tokenize(s))
8
1 cuối cùng, tức là
>>> import nltk  # Natural Language Toolkit
>>> from collections import Counter
>>> sum(x in {"Spot", "brown", "hair"} for x in nltk.wordpunct_tokenize(s))
8
4.