我一直在努力帮助我的朋友完成他的任务,我甚至无法弄清楚从哪里开始。我可以让它来识别字符串里面的子字符串但是给它开始的地方让我感到不安。我已经好几个小时了。欢迎任何帮助。以下是我在下面的任务中所做的一切。
PS。他的全班都不知道怎么做。老师给了他们一些关于他们和我的联盟的方法。
程序必须首先找到stringA中出现stringB的所有起始位置。
例如,如果stringA是“the car is in that carport
”和stringB
是“car
”,程序应该报告stringB出现在stringA中,从第4和第19位开始
(记住那个字符串
从位置0开始。
接下来程序必须找到stringA中的所有起始位置 stringB几乎出现了。
the
”,则该程序
应该报告
stringB几乎从第14位开始,这是第14位的开始
字符串“tha
”。最后,程序必须找到stringA中的所有起始位置 反向的 stringB出现。
rop
”,然后
程序应该报告stringB的反向出现在
stringA从第22位开始。程序equalsubstrings.py有助于理解如何操作 写这个程序。
答案 0 :(得分:1)
stringA = "the car is in that carport"
stringB = "the"
exact = []
reverse = []
almost = []
lenA = len(stringA)
lenB = len(stringB)
limit = lenA - lenB
reversedB = stringB[::-1]
pos = stringA.find(stringB)
while pos >= 0:
exact.append(pos)
pos = stringA.find(stringB, pos + 1)
pos = stringA.find(reversedB)
while pos >= 0:
exact.append(pos)
pos = stringA.find(reversedB, pos + 1)
for i in range(limit):
substrA = stringA[i:i+lenB]
misses = 0
for j in range(lenB):
if substrA[j] != stringB[j]:
misses += 1
if misses == 1:
almost.append(i)
print exact, almost, reverse
答案 1 :(得分:0)
我会给你两条线索:
为了检查字符串是否是另一个字符串的子字符串,您可以执行以下操作:
a =“这是一个测试”
B = “测试”
a.find(B,0,14)
10
in
,如以下示例所示:a =“这是一个测试” B = “测试” c =“不相关的文字” b 真正 b在c 假
要反转字符串,请执行以下操作:
>>> a="this is a test"
>>> a[::-1]
'tset a si siht'
祝你的作业好运
答案 2 :(得分:0)
我使用re模块。
re.finditer
允许您浏览字符串中子字符串的所有匹配项。mo.start()
,以便在字符串中找到匹配的索引。[^<current_character>]
替换当前字符,并为每个生成的正则表达式重复匹配过程,记录所有匹配项。这种方法的好处:你可以很好地掌握re
:-)。
equalsubstrings.py
程序? ; - 。)