Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python字符串分析,计算子字符串错误_Python_String_Counting - Fatal编程技术网

Python字符串分析,计算子字符串错误

Python字符串分析,计算子字符串错误,python,string,counting,Python,String,Counting,我尝试在Python中计算字符串中的子字符串 string = "aaaaahehabdha" x = string.index("he") #5 y = string.rindex("ha") #11 z = y - x + 2 #lenght of substring 11 - 5 + 2 = 8 a = [] a.append(string.count("he", x, z)) #1 a.append(string.count("ha", x, z)) #count only onc

我尝试在Python中计算字符串中的子字符串

string = "aaaaahehabdha" 

x = string.index("he") #5
y = string.rindex("ha") #11
z = y - x + 2 #lenght of substring 11 - 5 + 2 = 8

a = []
a.append(string.count("he", x, z)) #1
a.append(string.count("ha", x, z)) #count only once"ha" but in substring I have 2 x "ha"
print(a) # [1,1]
为什么string.count(“ha”,x,z)只计算一次“ha”?
提前感谢。

count的第三个参数不是长度,而是一个不包含结尾的索引。要计算正确的终点,请执行以下操作:

z = y + 2
示例,包括注释示例,计算从
he
ha
的正确子字符串:

string = "aaaaahehabdha" 
x = string.index("he")
y = string.rindex("ha")
z = y + 2
print('substring:',string[x:z])

string = "aaaaahehabdhaaaaaaaaaaa" 
x = string.index("he")
y = string.rindex("ha")
z = y + 2
print('substring:',string[x:z])
输出:

substring: hehabdha
substring: hehabdha

如果您只想计算子字符串中“ha”的数量,只需使用
string.count(“ha”)
,它将返回2。

您的参数
x
z
是字符串中搜索位置的开始索引和结束索引,但开始索引总是包含的,结束索引总是非包含的。您在
z
中存储了要从中搜索的开始索引之后的长度,而您实际上应该调用该索引

a.append(string.count("ha", x, y+1))

@WaterInButtle,但您计算的是长度,而不是结束索引。您正在使用6,8的开始、结束,而它应该是6,13。但是如果我有“aaaaa hehabdhaaaaaaaaaa”,我只想在hehabdha子字符串中计数。谢谢您的回答。我输入:a.append(string.count(“ha”,x,string.rindex(“ha”)+2)),现在就可以了。