这是我的示例字符串:" x:2:x,z:3:z,w:4:w,x:22:x" 我的目的是在字母" X"之间找到NUMBERS,我能够找到使用下面的代码,但这只适用于第一次出现或字母" X",如何做第二次发生,我没有得到如何使用循环?
Start_strp = BGP.find('x')
strp_BGP = BGP[Start_strp+len(content)+1:3]
return "peer-address:" + strp_BGP
答案 0 :(得分:1)
我将采用字符串方法拆分和剥离。这些可能非常有用:split将字符串分解为基于分隔符的列表,strip删除字符串周围的空格。我将使用 in运算符而不是找到我将要呈现的情况,我们只需要检查'x'是否存在,而不是它的位置。
我还将使用已经内置的函数 map 和 filter ,它们都将函数应用于列表中的每个元素。 Filter将仅返回函数返回True的元素,map将返回列表中每个元素的函数输出。关键字 lambda 定义了一个匿名函数,输入和输出用冒号分隔。
s = "x: 2 : x, z: 3 :z, w :4: w,x:22:x "
l = s.split(',') # ['x: 2 : x', ' z: 3 :z', ' w :4: w', 'x:22:x ']
f = filter(lambda s: 'x' in s, l) # ['x: 2 : x', 'x:22:x ']
map(lambda s: s.split(':')[1].strip(), f)
['2', '22']
我鼓励你使用这些功能,但我也理解掌握for循环很重要。最好!