在python中计算整个字符串中特定长度的所有子串

时间:2017-05-03 12:35:28

标签: python string

我收到一个字符串:'stackoverflow'。 输入应该是一个整数,例如假设a = 4。 我的代码应该做的是,它应该计算重叠间隔为4的子串的长度(考虑字符串'stackoverflow') -

  • String one:stac
  • String two:tack
  • 字符串三:acko
  • String four:ckov

然后一直持续到字符串的结尾。 然后我需要找到最多次出现的字符串。 到目前为止,我所做的是 -

def a_length():
    string=input('Enter string : ')
    substr=list('')
    a=input('Enter length of a : ')
    for i in range(len(string)):
        substr += string[i:i+a]
        print(substr)

我在这里尝试的是获取存在的子串列表但是它给出了一个我不理解的错误 -

  

AttributeError:'str'对象没有属性'slice'

但这肯定不起作用。任何帮助,将不胜感激。 谢谢!

2 个答案:

答案 0 :(得分:1)

string=input('Enter string : ')
substr=list('')
a=int(input('Enter length of a : '))
for i in range(len(string)):
    substr.append(string[i:i+a])
print(substr)

请注意,这样也会生成字符串“low”,“ow”和“w”

如果您想停在“flow”处,请在for循环中替换此行

for i in range(len(string)-a+1):

此外,使用列表理解:substr = [string[i:i+a] for i in range(len(string)-a+1)]

答案 1 :(得分:0)

我认为你正在寻找像这样的东西

s = input('Enter string')
a = int(input('Enter the interval'))
words_count = dict()
len1 = len(s)
i = 0
while i + a < len1:
  new_word = s[i:i+a]
  words_count[new_word] = words_count.get(new_word, 0) + 1
  i = i + 1


for word in words_count:
  print(word)
  print(words_count[word])  

您可以在此处运行我的代码 - https://repl.it/HdrX/1

希望这有帮助!