字符串中子字符串的基本索引重复(python)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了字符串中子字符串的基本索引重复(python),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1676字,纯文字阅读大概需要3分钟。
内容图文
![字符串中子字符串的基本索引重复(python)](/upload/InfoBanner/zyjiaocheng/709/c562347dd7e7445c993b50b21738ff64.jpg)
我正在努力教自己基础编程.
一个简单的项目是查找字符串中子字符串的重复索引.所以例如,在字符串“abcdefdef”和子串“def”中,我希望输出为3和6.我有一些代码写,但我没有得到我想要的答案.以下是我写的
注意:我知道可能有更简单的方法来生成结果,利用该语言的内置功能/包,例如正则表达式.我也知道我的方法可能不是最佳算法.从来没有,在这个时候,我只是在寻求修复以下逻辑的建议,而不是使用更多惯用的方法.
import string
def MIT(String, substring): # "String" is the main string I'm searching within
String_list = list(String)
substring_list = list(substring)
i = 0
j = 0
counter = 0
results = []
while i < (len(String)-1):
if [j] == [i]:
j = j + 1
i = i + 1
counter = counter + 1
if counter == len(substring):
results.append([i - len(substring)+1])
counter = 0
j = 0
i = i+1
else:
counter = 0
j = 0
i = i+1
print results
return
我的推理是这样的.我将String和子字符串转换为列表.这允许索引字符串中的每个字母.我设置i和j = 0 – 这些将分别是我在String和substring索引中的第一个值.我还有一个新的变量counter,我将其设置为0.基本上,我使用计数器来计算位置[i]中的字母等于位置[j]中的元素的次数.如果counter等于substring的长度,那么我知道[i-len(substring)1]是我的子串开始的位置,所以我将它添加到名为results的列表中.然后我重置计数器和j并继续搜索更多的子串.
我知道代码很尴尬,但我认为我仍然可以得到答案.相反,我得到:
>>> MIT("abcdefghi", "def")
[[3]]
>>> MIT("abcdefghi", "efg")
[[3]]
>>> MIT("abcdefghi", "b")
[[1]]
>>> MIT("abcdefghi", "k")
[[1]]
有什么想法吗?
解决方法:
正则表达式模块(re)更适合此任务.
好参考:
http://docs.python.org/howto/regex.html
也:
http://docs.python.org/library/re.html
编辑:
更“手动”的方式可能是使用切片
s = len(String)
l = len(substring)
for i in range(s-l+1):
if String[i:i+l] == substring:
pass #add to results or whatever
内容总结
以上是互联网集市为您收集整理的字符串中子字符串的基本索引重复(python)全部内容,希望文章能够帮你解决字符串中子字符串的基本索引重复(python)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。