在字符串中找到子字符串并返回其索引?

时间:2020-06-12 18:40:56

标签: python

我有一个列表,例如

list = ['harvard', 'university of hawaii', 'harrisburg college', 'maryland college', 'Binghampton', 'shorehard university', 'amamamamha', 'shores of gold']

我想首先获取所有带有字母'ha'的字母,然后将它们放入一个单独的列表中。

现在列表看起来像

new_list = ['harvard', 'university of hawaii', 'harrisburg college', 'Binghampton', 'shorehard university', 'amamamamha']

现在我想做的是计算每个短语中的字母数,直到字母'ha'例如,哈佛应该为0,夏威夷大学应该为14,等等。

我找不到解决办法,所以我想知道是否有可能。

6 个答案:

答案 0 :(得分:0)

我相信字符串index是您想要的:

for item in list_with_ha:
    index = item.index("ha")
    print(f'"ha" was found at index: {index}')

该索引也是'ha'前有多少个字符。您还可以使用find,如果找到了您要搜索的字符串,则两者都以相同的方式工作(一个未找到则引发异常,另一个返回-1),并且您已确保在每个字符串的某处找到'ha'

答案 1 :(得分:0)

your_list = ['harvard', 'university of hawaii', 'harrisburg college', 'Binghampton', 'shorehard university', 'amamamamha']
output = list(map(lambda x: x.find('ha'), your_list)) 

# output == [0, 14, 0, 4, 5, 8]

答案 2 :(得分:0)

您可以使用.partition("seperator")

def count_to_ha(phrase):
    return len(phrase.partition("ha")[0])

用法:count_to_ha("harvard")

答案 3 :(得分:0)

此词典将清楚地打印出结果:

l = ['harvard', 'university of hawaii', 'harrisburg college', 'maryland college', 'Binghampton', 'shorehard university', 'amamamamha', 'shores of gold']

d = {}

for word in l:
    d[word] = len(word.split('ha')[0])

print(d)

输出:

{'harvard': 0,
 'university of hawaii': 14,
 'harrisburg college': 0,
 'maryland college': 16,
 'Binghampton': 4,
 'shorehard university': 5,
 'amamamamha': 8,
 'shores of gold': 14}

答案 4 :(得分:0)

如果要查找简明脚本:

list = ['harvard', 'university of hawaii', 'harrisburg college', 'maryland college', 'Binghampton', 'shorehard university', 'amamamamha', 'shores of gold']
res_list = [a.find('ha') for a in list if a.__contains__("ha")]

print(res_list)

输出:

[0, 14, 0, 4, 5, 8]

说明:

  • 字符串可以使用方法__contains__()来检查它是否包含子字符串。
  • find()方法返回找到子字符串的第一个索引
  • 为简洁起见,以上代码使用list comprehension。看到这个https://realpython.com/list-comprehension-python/

答案 5 :(得分:0)

这是三个列表:

l1 = ['harvard', 'university of hawaii', 'harrisburg college', 'maryland college', 'Binghampton', 'shorehard university', 'amamamamha', 'shores of gold']
l2 = [w for w in l1 if 'ha' in w]
l3 = [len(w.split('ha')[0]) for w in l2]

print(l1)
print(l2)
print(l3)

输出:

['harvard', 'university of hawaii', 'harrisburg college', 'maryland college', 'Binghampton', 'shorehard university', 'amamamamha', 'shores of gold']
['harvard', 'university of hawaii', 'harrisburg college', 'Binghampton', 'shorehard university', 'amamamamha']
[0, 14, 0, 4, 5, 8]
相关问题