Python中的子串比较

6 投票
5 回答
26772 浏览
提问于 2025-04-16 03:02

如果我有一个电话目录的列表,比如:

['John:009878788677' , 'Jefrey:67654654645' , 'Maria:8787677766']

那么有什么函数可以用来比较这个列表中每个条目是否包含某个子字符串(比如:Joh)呢?

我试过使用

if(PhoneDirectory.find(Joh) != -1)

但是没有成功。

请帮帮我……

5 个回答

1

因为还没有人推荐这个,我来分享一下:

all_johns = [p for p in PhoneDirectory if 'Joh' in p]
3
if any(entry.startswith('John:') in entry for entry in PhoneDirectory)
PhoneList = ['John:009878788677' , 'Jefrey:67654654645' , 'Maria:8787677766']

numbers = { a:b 
            for item in PhoneList
            for a,_,b in (item.partition(':'),)
            }

print numbers
print "%s's number is %s." % ( 'John', numbers['John'] )

但是我会准备一些包含两个元素的东西,因为你列出的字符串列表不太适合这个任务:

19

如果你想要单独检查每一个条目:

for entry in PhoneDirectory:
    if 'John' in entry: ...

如果你只是想知道是否有任何一个条目符合条件,而不在乎具体是哪个:

if any('John' in entry for entry in PhoneDirectory):
    ...

需要注意的是,any 不会做“多余”的工作——它会在找到第一个符合条件的条目时立即返回True(如果没有条目符合条件,它当然需要检查每一个条目来确认这一点,然后返回False)。

撰写回答