string - python - 有没有一种有效的方法在两个字符串之间拆分字符串?

我试图拆分一个字符串,从该字符串中提取一些必需的字符串片段。 我所拥有的字符串如下所示:


s='conf/icdcs/BarbaraGS86|conf/icdcs/ShethL86|conf/icde/BhargavaMRS89|conf/icde/BhargavaNS88|conf/icde/BhargavaR88|conf/icde/ElmagarmidH88|conf/infocom/BadalM84|conf/sigmod/Skeen81|conf/sosp/PresottoM83|conf/vldb/Gray81|journals/cacm/EswarranGLT76|journals/cacm/Lamport78|journals/computer/Alexandridis86|journals/computer/Goguen86|journals/computer/KartashevK86|journals/csur/BernsteinG81|journals/csur/DavidsonG85|journals/csur/Kohler81|journals/jacm/Papadimitriou79b|journals/tc/Avizinis76|journals/tc/Garcia-Molina82|journals/tocs/BirrelN84|journals/tocs/CheritonZ85|journals/tocs/Reed83|journals/tods/Herlihy87|journals/tods/KungR81|journals/tse/BhargavaR89|journals/tse/BlackHJLC87|journals/tse/Randell75|journals/tse/SkeenS83'



我想在两个正斜杠之间的'conf'之后提取子字符串。


conf/icdcs/ShethL86


conf/icde/BhargavaMRS89


conf/icde/BhargavaNS88




因此,对于上面的字符串,我想提取:


icdcs


icde


icde



我成功地编写了以下代码来提取所需的值:


def find_between(s, start, end):


 return (s.split(start))[1].split(end)[0]



start = 'conf/'


end = '/'


res=find_between(s,start,end)




但只能提取一次。 我希望最好能够提取字符串列表中的所有子字符串。

时间:

split() 是你的朋友。如果你总是希望得到 conf/ 之后的东西那就先把它分开 。


print(s.split('conf/'))


# ['', 'icdcs/BarbaraGS86|',


# 'icdcs/ShethL86|',


# 'icde/BhargavaMRS89|',


# 'icde/BhargavaNS88|',


# 'icde/BhargavaR88|',


# 'icde/ElmagarmidH88|',


# 'infocom/BadalM84|',


# 'sigmod/Skeen81|',


# 'sosp/PresottoM83|',


# 'vldb/Gray81|journals/cacm/EswarranGLT76|journals/cacm/Lamport78|journals/computer/Alexandridis86|journals/computer/Goguen86|journals/computer/KartashevK86|journals/csur/BernsteinG81|journals/csur/DavidsonG85|journals/csur/Kohler81|journals/jacm/Papadimitriou79b|journals/tc/Avizinis76|journals/tc/Garcia-Molina82|journals/tocs/BirrelN84|journals/tocs/CheritonZ85|journals/tocs/Reed83|journals/tods/Herlihy87|journals/tods/KungR81|journals/tse/BhargavaR89|journals/tse/BlackHJLC87|journals/tse/Randell75|journals/tse/SkeenS83']



然后你可以将结果字符串分割到下一个 / 上,并将每个项的第一部分取入。


confs = [i.split('/')[0] for i in s.split('conf/') if i.strip()]



print(confs)


# ['icdcs', 'icdcs', 'icde', 'icde', 'icde', 'icde', 'infocom', 'sigmod', 'sosp', 'vldb']



如果只需要唯一值,则可以使用 set() 删除重复项。


print(set(confs))


# {'vldb', 'sigmod', 'icdcs', 'sosp', 'icde', 'infocom'}



我看到其他一些答案拆分 | ,这很好,但是这确实会在列表中创建更多的项目,而不是在您输入的情况下进行迭代。 在 conf/ 上拆分可以保证每个项目都有价值。 你只需要拿走每个部分的第一部分,然后就可以了。

...