计算字符串中列表中的子字符串

问题描述 投票:0回答:3

我想要一个在字符串内部查找子字符串的列表,并接收子字符串在该字符串中出现的次数。

list = ['one', 'two', 'three']
str = "one one two four five six"
count = str.count(list)

所以在这个例子中,计数应该是 3。但是,

.count()
由于某种原因无法从列表中读取字符串,所以我不知道如何解决这个问题。

python string list counter
3个回答
3
投票

一种方法是将

sum
与生成器表达式结合使用,并利用
set
进行 O(1) 查找。
str.split()
将字符串拆分为列表,并以空格分隔。

str_set = {'one', 'two', 'three'}
x = 'one one two four five six'

count = sum(i in str_set for i in x.split())

print(count)  # 3

这样做的原因是

bool
int
的子类,因此我们可以将
True
元素相加,就好像它们是整数一样。

请注意,您有一个列表和字符串,不涉及元组。此外,不要在类之后命名变量(例如

list
str
set
)。


0
投票

我想你想要的是以下内容

count = sum([str.count(e) for e in tup))

其中

sums
substring
中的任意
tup
出现在
str
中的次数。

此外,您的

tuple
list
。要使其成为
tuple
(不可变),请使用
(

('one', 'two', 'three')

此外,您应该使用变量名称

str_
(标准 Python 约定)以避免重载
str
对象。


0
投票

使用生成器表达式和

sum
:

count = sum(1 for x in the_string.split(" ") if x in tup)
© www.soinside.com 2019 - 2024. All rights reserved.